因为在swoole中,使用sleep函数会使进程陷入睡眠阻塞;sleep过程中只有信号可以打断,由于swoole的信号是基于signalfd实现的,所以即使发送信号也无法中断sleep,只有到指定的时间后操作系统才会重新唤醒当前的进程。

本教程操作环境:Windows10系统、Swoole4版、DELL G3电脑
为什么swoole不能用sleep
在异步IO的程序中,不得使用sleep/usleep/time_sleep_until/time_nanosleep。(下文中使用sleep泛指所有睡眠函数)
sleep函数会使进程陷入睡眠阻塞
直到指定的时间后操作系统才会重新唤醒当前的进程
sleep过程中,只有信号可以打断
由于Swoole的信号处理是基于signalfd实现的,所以即使发送信号也无法中断sleep
乐活途购物分享社区
beta v1.1版本为第一个版本,简单的整合了基础功能,各位站长拿到程序后,不要纠结后台的功能简单,后续将不断更新扩展。在beta v1.1版本使用过程中遇到什么问题,请登录 www.loftto.com 进行反馈! 安装说明######重要提醒:程序不支持二级目录安装,请使用一级目录或二级目录绑定!#第一步,确定你的服务器支持PHP+mysql。#第二步,确定你的服务器开启了gd库。#第三步,
0 查看详情
Swoole提供的swoole_event_add、swoole_timer_tick、swoole_timer_after、swoole_process::signal、异步swoole_client 在进程sleep后会停止工作。swoole_server也无法再处理新的请求。
实例程序
$serv = new swoole_server("127.0.0.1", 9501);$serv->set(['worker_num' => 1]);$serv->on('receive', function ($serv, $fd, $from_id, $data) { sleep(100); $serv->send($fd, 'Swoole: '.$data);});$serv->start();
onReceive事件中执行了sleep函数,server在100秒内无法再收到任何客户端请求。
推荐学习: swoole教程
以上就是为什么swoole不能用sleep的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/862129.html
微信扫一扫
支付宝扫一扫