首页
下载
文档
社区
视频
捐赠
源代码
赞助商
AOT 编译器
AI 助理
商业产品
PHP AOT 原生编译器
Swoole-Compiler 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
swoole 1.8+ tick里用mysql pdo句柄失效
swoole 1.8+ tick里用mysql pdo句柄失效 请问峰哥,怎么用在以下方式加个定时器,谢谢,峰哥!!!!! 并在定时器里面用mysql pdo句柄!!!!! 程序如下: {{{ class CollectLogServer { public function __construct(){ $this->serv = new swoole_server(xx,xx); //tcp,udp服务 这里是伪代码 $this->serv->on('Start', array($this, 'onStart')); $this->serv->on('WorkerStart', array($this, 'onWorkerStart')); $this->serv->on('connect', array($this, 'onConnect')); $this->serv->on('Receive', array($this, 'onReceive')); $this->serv->on('Close', array($this, 'onClose')); $this->serv->on('Task', array($this, 'onTask')); $this->serv->on('Finish', array($this, 'onFinish')); $this->serv->on('Tick', array($this, 'onTick')); $this->serv->start(); } public function onTick($id,$serv) { //这里是要定时执行的任务 $serv->pdo //峰哥 我这里获取不到mysql pdo句柄啊????? } public function onWorkerStart($serv, $worker_id) { if ($worker_id >= $serv->setting['worker_num']) { $serv->pdo = new \PDO( "mysql:host=127.0.0.1;port=3306;dbname=aa", "test", "1234", array( \PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8';", \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, \PDO::ATTR_PERSISTENT => true ) ); } if (!$serv->taskworker) { $serv->tick(4000,$this->onTick($worker_id,$serv)); } } } new CollectLogServer(); }}}
发布于8年前 · 0 次浏览 · 来自
提问
用
用心看世界
swoole 1.8+ tick里用mysql pdo句柄失效 请问峰哥,怎么用在以下方式加个定时器,谢谢,峰哥!!!!! 并在定时器里面用mysql pdo句柄!!!!! 程序如下: {{{ class CollectLogServer { public function __construct(){ $this->serv = new swoole_server(xx,xx); //tcp,udp服务 这里是伪代码 $this->serv->on('Start', array($this, 'onStart')); $this->serv->on('WorkerStart', array($this, 'onWorkerStart')); $this->serv->on('connect', array($this, 'onConnect')); $this->serv->on('Receive', array($this, 'onReceive')); $this->serv->on('Close', array($this, 'onClose')); $this->serv->on('Task', array($this, 'onTask')); $this->serv->on('Finish', array($this, 'onFinish')); $this->serv->on('Tick', array($this, 'onTick')); $this->serv->start(); } public function onTick($id,$serv) { //这里是要定时执行的任务 $serv->pdo //峰哥 我这里获取不到mysql pdo句柄啊????? } public function onWorkerStart($serv, $worker_id) { if ($worker_id >= $serv->setting['worker_num']) { $serv->pdo = new \PDO( "mysql:host=127.0.0.1;port=3306;dbname=aa", "test", "1234", array( \PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8';", \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, \PDO::ATTR_PERSISTENT => true ) ); } if (!$serv->taskworker) { $serv->tick(4000,$this->onTick($worker_id,$serv)); } } } new CollectLogServer(); }}}
赞
0
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
登录
后参与评论
评论
2018-04-29
王
王维彪-驰骋天下
这个个pdo到底想给谁用呢... {{{ if (!$serv->taskworker) { $serv->tick(4000,$this->onTick($worker_id,$serv)); } }}} 从这段看,onTick是在worker里执行的。 但是 {{{ if ($worker_id >= $serv->setting['worker_num']) { } }}} 这堆又是给taskWorker执行的....
赞
0
回复
2018-04-29
大
大怪兽
如果你的目标是要在taskWorker里用连接,也应该是在swoole_server->task()时把pdo以参数传过去比较好吧
赞
0
回复