首页
下载
文档
问答社区
视频
捐赠
源代码
AI 助理
赞助商
CRMEB
Apipost
腾讯云
微擎
禅道
51Talk
商业产品
Swoole AI 智能文档翻译器
Swoole-Compiler PHP 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
进程信号不生效,请问为什么要把进程API变为异步??
### 问题描述 1、如果不通过go func 包裹起来,进程会直接自动退出。 2、请问为什么要把进程API变为异步???? 3、父进程通过非阻塞信号可以直接运行逻辑,为什么要设计为协程在外币那才能看见“进程信号”运行???? 4、感谢回答~~~ ### Swoole版本,PHP版本,以及操作系统版本信息 Version => 4.5.7 Swoole ### 相关代码 ```php go(function () { Process::signal(SIGUSR1, function ($signal) { //必须为false,非阻塞模式 echo 'SIGUSR1' . PHP_EOL; }); Process::kill(getmypid(), SIGUSR1); while (1) { $ret = Swoole\Process::wait(false); if ($ret !== false) { var_dump($ret); } co::sleep(1); } }); ``` ### 你期待的结果是什么?实际看到的错误信息又是什么? 结果正常触发信号,这是不明白为什么这么设计进程API? 还望文档直接贴上能运行的demo,能这样运行我还是看了帖子才知道这么写!!这样会打击很多人学习的积极性。
发布于4年前 · 2 次浏览 · 来自
提问
twomiao
### 问题描述 1、如果不通过go func 包裹起来,进程会直接自动退出。 2、请问为什么要把进程API变为异步???? 3、父进程通过非阻塞信号可以直接运行逻辑,为什么要设计为协程在外币那才能看见“进程信号”运行???? 4、感谢回答~~~ ### Swoole版本,PHP版本,以及操作系统版本信息 Version => 4.5.7 Swoole ### 相关代码 ```php go(function () { Process::signal(SIGUSR1, function ($signal) { //必须为false,非阻塞模式 echo 'SIGUSR1' . PHP_EOL; }); Process::kill(getmypid(), SIGUSR1); while (1) { $ret = Swoole\Process::wait(false); if ($ret !== false) { var_dump($ret); } co::sleep(1); } }); ``` ### 你期待的结果是什么?实际看到的错误信息又是什么? 结果正常触发信号,这是不明白为什么这么设计进程API? 还望文档直接贴上能运行的demo,能这样运行我还是看了帖子才知道这么写!!这样会打击很多人学习的积极性。
赞
0
分享
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
评论
2020-11-10
twomiao
总结:请问这么做有什么优点???能否举例说明一下?
赞
0
回复
2020-11-10
鲁飞
Swoole\Process::signal要废弃了,不推荐使用异步回调样式的API。 可以用协程相关的代替 https://wiki.swoole.com/#/coroutine/system?id=waitsignal
赞
0
回复
2020-11-10
Rango
1、如果不通过go func 包裹起来,进程会直接自动退出 ------- 这是与包不包`go`没关系,最新的`Swoole`内核不会将信号监听作为`EventLoop`的挂起条件。 你可以添加一个定时器,进程就不会退出了。 ```php Process::signal(SIGUSR1, function ($signal) { //必须为false,非阻塞模式 echo 'SIGUSR1' . PHP_EOL; }); Event::tick(1000, function () { echo "sleep 1\n"; }); Event::wait(); ``` 2、请问为什么要把进程API变为异步???? ----- `Process::signal`本身就是异步风格API,协程模式下建议使用`Co\System::waitSignal()` 3、父进程通过非阻塞信号可以直接运行逻辑,为什么要设计为协程在外边那才能看见“进程信号”运行???? ---- 异步回调相当于另外新开了一个协程
赞
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一直是同一个。没用使用到多进程啊。