php swoole异步处理mysql
php swoole异步处理mysql
<pre>
//创建websocket服务器对象,监听0.0.0.0:9509端口
//异步测试
$ws = new swoole_websocket_server("0.0.0.0", 9600);
$ws->set(array(
'worker_num' => 1,
'max_conn' => 65535,
/*'daemonize' => true,*/
'backlog' => 128,
'task_worker_num' => 1,
));
//监听WebSocket连接打开事件
$ws->on('open', function ($ws, $request) {
});
/* $tag 1 初始化玩家信息 */
//监听WebSocket消息事件
$ws->on('message', function ($ws, $frame) {
});
//定时器要写在WorkerStart这个里面哦
$ws->on('WorkerStart', function ($serv, $worker_id) {
//投递异步任务
$data=array('wef'=>'wefe');
$task_id = $serv->task($data);
echo "Dispath AsyncTask: id=$task_id\n";
/*执行其他操作*/
echo'lalalalalalal';
});
/*通用的执行*/
function commonexecute($sql, $zhanwei = '', $isdebug = 0)
{
try {
$stmt = \Db::getStmt($sql);
if (empty($zhanwei)) {
$isok=$stmt->execute();
} else {
$isok=$stmt->execute($zhanwei);
}
if ($isdebug) {
getrepairsql($sql, $zhanwei);
}
} catch (\PDOException $e) {
$errorstr1='mysql语句错误1:'.$e->getMessage().PHP_EOL;
$errorstr2='mysql语句错误2:'.$sql.PHP_EOL;
echo $errorstr1;
echo'</br>';
echo $errorstr2;
file_put_contents(__DIR__.'/error.log', date("Y-m-d H:i:s"). " " . $errorstr1.PHP_EOL, FILE_APPEND | LOCK_EX);
file_put_contents(__DIR__.'/error.log', date("Y-m-d H:i:s"). " " . $errorstr2.PHP_EOL, FILE_APPEND | LOCK_EX);
exit();
}
return $isok;
}
//处理异步任务
$ws->on('task', function ($serv, $task_id, $from_id, $data) {
echo "New AsyncTask[id=$task_id]".PHP_EOL;
var_dump($data);
$sql='select SLEEP(6)';
$isok=commonexecute($sql);
//返回任务执行的结果
$serv->finish("$data -> OK");
});
//处理异步任务的结果
$ws->on('finish', function ($serv, $task_id, $data) {
echo "AsyncTask[$task_id] Finish: $data".PHP_EOL;
});
//监听WebSocket连接关闭事件
$ws->on('close', function ($ws, $fd) {
});
$ws->start();
</pre>
可以看出了执行sleep sql语句时候并有堵塞线程
php swoole异步处理mysql的更多相关文章
- Swoole 协程 MySQL 客户端与异步回调 MySQL 客户端的对比
Swoole 协程 MySql 客户端与 异步回调 MySql 客户端的对比 为什么要对比这两种不同模式的客户端? 异步 MySQL 回调客户端是虽然在 Swoole 1.8.6 版本就已经发布了, ...
- Gearman + Nodejs + MySQL UDF异步实现 MySQL 到 Redis 的数据同步
[TOC] 1, 环境 CentOS, MySQL, Redis, Nodejs 2, Redis简介 Redis是一个开源的K-V内存数据库,它的key可以是string/set/hash/list ...
- Swoole 异步mysql使用
<?php class mysql { private $param; public $db; public function __construct() { $this->db = ne ...
- swoole异步任务数据报表生成
<?php include 'vendor/autoload.php'; class server { private $serv; private $db; /** * [__construc ...
- swoole异步群发模板消息
1.用的是TP5.1的框架,swoole分成一个客户端发送接收消息,一个服务器负责处理信息 服务端代码,服务器要先安装swoole拓展,用 php server.php 启动进程监听 <?php ...
- 用swoole简单实现MySQL连接池
MySQL连接池 在传统的网站开发中,比如LNMP模式,由Nginx的master进程接收请求然后分给多个worker进程,每个worker进程再链接php-fpm的master进程,php-fpm再 ...
- scrapy 异步存储mysql
1.在setting中设置MySQL连接信息 HOST='101.201.70.139'MYSQL_DBNAME='anttest'MYSQL_PASSWORD='Myjr678!@#'MYSQL_U ...
- swoole异步redis安装前置条件和流程
---恢复内容开始--- 1.redis服务 确认redis在服务器中已经安装了 2.hiredis库 第二步安装hiredis 下载位置 2.1获取 安装包https://github.com/re ...
- scrapy实战8关于数据异步写入mysql:
环境:python3 爬取网址:腾讯社招(http://hr.tencent.com/position.php?keywords=&tid=0&start=0#a)总共2202条数据 ...
随机推荐
- MYSQL中HEX、UNHEX函数
HEX()函数:返回十六进制值的字符串表示形式.注意:并不是十进制转化为十六进制数,而是转化为字符串... UNHEX() 函数: 每对十六进制数字转化为一个字符. 下面是HEX()几个简单的例子: ...
- CF401D Roman and Numbers 状压DP
CF401D 题意翻译 将n(n<=10^18)的各位数字重新排列(不允许有前导零) 求 可以构造几个mod m等于0的数字 题目描述 Roman is a young mathematicia ...
- Kubernetes的Service运行原理
一.为什么Servcie能定位到Pod 因为Pod的IP是不固定的,所以Kubernetes需要Service,除此之外它还可以在多个Pod间负载均衡 Service的访问入口,其实是宿主机的kube ...
- VSCode 配置 Python 开发环境
一.环境准备 首先需要先安装好 Python 和 VSCode, 下载地址如下 VSCode Python 二.安装 Python 扩展 首先在VSCode上安装 Python 扩展,如图: 三.新建 ...
- lnmp安装mysql
lnmp安装mysql 下载lnmp wget http://soft.vpser.net/lnmp/lnmp1.6.tar.gz 解压 tar ‐xf lnmp1..tar.gz 安装数据库 ./i ...
- unity5.6.1 videoPlayer
unity5.6开始增加了videoPlayer,使得视频播放相对比较简单,项目需求进行了一下研究应用,也遇到很多坑,Google 百度一下发现确实有这些问题,一些简单问题如下: 1)播放无声音 2) ...
- java script三大组成部分
JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果.通常JavaScript脚本是通过嵌入在HTML中来实现 ...
- intellij idea - Project Structure 项目结构详解(简单明了)
IDEA Project Structure 设置 可以点击 按钮,或者使用快捷键 Ctrl + Shift + Alt + S 打开 Project Structure .如下如所示: 项目的左 ...
- 盘点一下Creator星球上的开源工具包!
晓衡开始写公众号,最早是从上架 Cocos 商店的 pbkiller 插件开始的,到至今有2年2个月了.在这期间,又陆续在公众号上分享了多个实用工具包,在这里统一盘点一下,方便与大家交流学习. 一.u ...
- 使用ESP8266 打造一款物联网产品---新版ESP8266-RTOS-SDK(V3.1以上)串口使用指南
问题背景: 使用乐鑫的ESP8266做一个物联网的项目,要使用串口0通信,串口1作为打印log.本来是一个非常简单的事情.没想到居然里面有个大坑.本着前任踩坑,后任抱娃的原则. 这里就做个记录,给后面 ...