首页
下载
文档
问答社区
视频
捐赠
源代码
AI 助理
赞助商
CRMEB
Apipost
腾讯云
微擎
禅道
51Talk
商业产品
Swoole AI 智能文档翻译器
Swoole-Compiler PHP 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
task 和 swoole_event_add冲突
```php public function onWorkerStart($request) { $kit = new AutoReload($request->master_pid); $kit->watch(WEB_ROOT); $kit->addFileType('.php'); $kit->run(); } public function start() { $this->run(); $this->server->on('start' , array($this, 'onStart')); //任务获取(切记不要在这里做任务数据计算) $this->server->on('Receive', function(\swoole_server $serv, $fd, $from_id, $data) { $serv->task($data); }); $this->server->on('workerStart' , array($this, 'onWorkerStart')); $this->server->on('open' , array($this, 'onOpen')); $this->server->on('message' , array($this, 'onMessage')); $this->server->on('request' , array($this, 'onRequest')); //执行任务模块 $this->server->on('Task', function (\swoole_server $serv, $task_id, $from_id, $data) { var_dump($data); $serv->finish("$data -> OK"); }); //任务结束 $this->server->on('Finish', function (\swoole_server $serv, $task_id, $data) { echo "AsyncTask[$task_id] Finish: $data".PHP_EOL; }); $this->server->on('close' , array($this, 'onClose')); $this->server->start(); } ``` 在文件热更新监控的时候 使用swoole_event_add 报错 PHP Fatal error: swoole_event_add(): cannot use async-io in task process. in /data/web/interface/vendor/web/AutoReload.php on line 87 Fatal error: swoole_event_add(): cannot use async-io in task process. in /data/web/interface/vendor/web/AutoReload.php on line 87 [2016-06-17 12:30:35 ^31796.4] ERROR zm_deactivate_swoole (ERROR 103): Fatal error: swoole_event_add(): cannot use async-io in task process. in /data/web/interface/vendor/web/AutoReload.php on line 87.
发布于7年前 · 1 次浏览 · 来自
提问
郭
郭大侠
```php public function onWorkerStart($request) { $kit = new AutoReload($request->master_pid); $kit->watch(WEB_ROOT); $kit->addFileType('.php'); $kit->run(); } public function start() { $this->run(); $this->server->on('start' , array($this, 'onStart')); //任务获取(切记不要在这里做任务数据计算) $this->server->on('Receive', function(\swoole_server $serv, $fd, $from_id, $data) { $serv->task($data); }); $this->server->on('workerStart' , array($this, 'onWorkerStart')); $this->server->on('open' , array($this, 'onOpen')); $this->server->on('message' , array($this, 'onMessage')); $this->server->on('request' , array($this, 'onRequest')); //执行任务模块 $this->server->on('Task', function (\swoole_server $serv, $task_id, $from_id, $data) { var_dump($data); $serv->finish("$data -> OK"); }); //任务结束 $this->server->on('Finish', function (\swoole_server $serv, $task_id, $data) { echo "AsyncTask[$task_id] Finish: $data".PHP_EOL; }); $this->server->on('close' , array($this, 'onClose')); $this->server->start(); } ``` 在文件热更新监控的时候 使用swoole_event_add 报错 PHP Fatal error: swoole_event_add(): cannot use async-io in task process. in /data/web/interface/vendor/web/AutoReload.php on line 87 Fatal error: swoole_event_add(): cannot use async-io in task process. in /data/web/interface/vendor/web/AutoReload.php on line 87 [2016-06-17 12:30:35 ^31796.4] ERROR zm_deactivate_swoole (ERROR 103): Fatal error: swoole_event_add(): cannot use async-io in task process. in /data/web/interface/vendor/web/AutoReload.php on line 87.
赞
0
分享
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
评论
2017-10-15
量
量大福大
因为你在task进程也执行了 swoole_event_add() ,判断下如果不是主进程。就不执行了。只要主进程执行realod就够了
赞
0
回复
2017-10-15
o
osindex
使用`$serv->taskworker`属性来判断当前的进程是不是Task进程,如果是Task进程,那就不能使用任何异步的接口,包括`swoole_event_add`
赞
0
回复
微信公众号
热门内容
暂无回复的问答
- CodeGalaxy K3s 轻量集群节点之间如何实现负载均衡
- 关于openssl CURL WARNING swSSL_connect: SSL_connect(fd=69) failed. Error: error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small[1|394]
- 多个模型如何进行事务异常回退?
- websocket开启wss报错
- 协程tcp服务器如何使用多进程?recv()方法接收信息,打印出来的pid一直是同一个。没用使用到多进程啊。