首页
下载
文档
社区
视频
捐赠
源代码
赞助商
AOT 编译器
AI 助理
商业产品
PHP AOT 原生编译器
Swoole-Compiler 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
当swoole\Event 进行信号监听和 文件描述符监听时,信号监听无法触发,
### 问题描述 当swoole\Event 进行信号监听和 文件描述符监听时,信号监听无法触发, 当swoole\Event 进行信号监听和 文件描述符监听时以及定时任务时 信号监听可以触发,但会在定时任务执行前才会触发 ### Swoole版本4.6.1,PHP7.3,以及操作系统版本信息unbuntu20.04 ### 相关代码 ```php Swoole\Process::signal(SIGCHLD, function ($sig) { while ($ret = Swoole\Process::wait(false)) { // create a new child process // $p = new Swoole\Process('callback_function'); // $p->start(); var_dump($ret); } }); Swoole\Process::signal(SIGRTMIN, function ($sig) { echo '当前主进程收到信号:'.getmypid()."\n"; }); //Swoole\Timer::tick(10000, function () { // echo '主进程'.date('H:i:s')."\n"; //}); //利用inotify监控文件变化 $fd = inotify_init(); Swoole\Event::add($fd, function($fp) { $resp = fread($fp, 8192); var_dump($resp); //socket处理完成后,从epoll事件中移除socket Swoole\Event::del($fp); fclose($fp); },null,SWOOLE_EVENT_READ); echo '当前主进程'.getmypid()."\n"; Swoole\Event::wait(); ``` ### 你期待的结果是什么?实际看到的错误信息又是什么? swoole\Event 使用时,信号监听可以正常触发
发布于5年前 · 3 次浏览 · 来自
提问
云天001
### 问题描述 当swoole\Event 进行信号监听和 文件描述符监听时,信号监听无法触发, 当swoole\Event 进行信号监听和 文件描述符监听时以及定时任务时 信号监听可以触发,但会在定时任务执行前才会触发 ### Swoole版本4.6.1,PHP7.3,以及操作系统版本信息unbuntu20.04 ### 相关代码 ```php Swoole\Process::signal(SIGCHLD, function ($sig) { while ($ret = Swoole\Process::wait(false)) { // create a new child process // $p = new Swoole\Process('callback_function'); // $p->start(); var_dump($ret); } }); Swoole\Process::signal(SIGRTMIN, function ($sig) { echo '当前主进程收到信号:'.getmypid()."\n"; }); //Swoole\Timer::tick(10000, function () { // echo '主进程'.date('H:i:s')."\n"; //}); //利用inotify监控文件变化 $fd = inotify_init(); Swoole\Event::add($fd, function($fp) { $resp = fread($fp, 8192); var_dump($resp); //socket处理完成后,从epoll事件中移除socket Swoole\Event::del($fp); fclose($fp); },null,SWOOLE_EVENT_READ); echo '当前主进程'.getmypid()."\n"; Swoole\Event::wait(); ``` ### 你期待的结果是什么?实际看到的错误信息又是什么? swoole\Event 使用时,信号监听可以正常触发
赞
0
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
登录
后参与评论
评论
2021-02-01
鲁飞
SIGRTMIN 这个信号不是会废弃吗 ```bash PHP Warning: Use of undefined constant SIGRTMIN - assumed 'SIGRTMIN' (this will throw an Error in a future version of PHP) ``` 这样我测试正常收到信号 ```php Swoole\Process::signal(SIGCHLD, function ($sig) { var_dump($sig); while ($ret = Swoole\Process::wait(false)) { var_dump($ret); } }); Swoole\Process::signal(SIGTERM, function ($sig) { echo '当前主进程收到信号:'.getmypid()."\n"; var_dump($sig); while ($ret = Swoole\Process::wait(false)) { var_dump($ret); } }); ```
赞
2
回复
2021-02-02
云天001
回复
鲁飞
你代码里有event文件描述符的监听么,请贴出完整代码
赞
0
回复
2021-02-02
云天001
回复
鲁飞
确实我改成监听 SIGUSR1 就不存在这个问题了, 难道php不能监听linux信号列表文档中的可靠信号么? https://wiki.swoole.com/#/other/signal
赞
1
回复