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条数据 ... 
随机推荐
- Flutter 修改SDK 路径出现的问题
			更换Flutter SDK 路径之后出现的问题. 解决方法:flutter packages upgrade. 替换: 替换这两个文件里的路径. 同时修改电脑配置文件里的路径: open -a Tex ... 
- 了解ajax基本爬取方式
			'''爬去豆瓣电影数据了解ajax的基本爬去方式 ''' from urllib import requestimport jsonimport ssl url = "https://mov ... 
- 引入flask_cache时出现ModuleNotFoundError: No module named 'flask.ext'
			环境: centos 7.3 python 3.6 flask 1.0.2 flask-cache 0.13.1 引入flask_cache后运行时,出现以下错误 Traceback (most re ... 
- 如何在Linux服务器上部署Mysql
			一.安装mysql 1.通过文件上传工具,将mysql安装包上传到linux服务器上 2.卸载mariadb包,由于系统中存在mariadb包会导致mysql安装时报错mariadb-libs被mys ... 
- 基于 WebGL 的 3D 动态柱状图表
			发现现在工业SCADA上或者电信网管方面用图表的特别多,虽然绝大部分人在图表制作方面用的是echarts,他确实好用,但是有些时候我们不能调用别的插件,这个时候就得自己写这些美丽的图表了,然而图表轻易 ... 
- TensorFlow2.0(7):激活函数
			.caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ... 
- nginx::环境搭建
			ubuntu18.04 环境 1.需要gcc 环境,如果没有gcc环境,则需要安装 apt install gcc .安装pcre依赖库 PCRE(Perl Compatible Regular Ex ... 
- Logstash 入门
			一.简介 Logstash 是开源的服务器端数据处理管道,支持从不同来源采集数据,装换数据,并将数据发送到不同的存储库中. Logstash 项目诞生于 2009 年 8 月 2 日.其作者是世界著名 ... 
- 在已有 Windows10 系统的基础上,安装 Ubuntu17.10 系统(新版 BIOS)
			1.第一步,下载Ubuntu系统镜像 2.第二步,制作启动U盘,使用UltralSO,步骤:打开文件——选择iso文件——启动——写入硬盘映像——选择U盘——写入 3.第三步,分区,在Windows徽 ... 
- .NET Core 3.0 构建和部署
			Default Executables 默认可执行文件 在 dotnet build 或 dotnet publish 期间,将创建一个与你使用的 SDK 的环境和平台相匹配的可执行文件. 和其他本机 ... 
