• 技术文章 >php框架 >Swoole

    为什么swoole不能用sleep

    长期闲置长期闲置2022-04-13 15:09:28原创730

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

    本教程操作环境:Windows10系统、Swoole4版、DELL G3电脑

    为什么swoole不能用sleep

    在异步IO的程序中,不得使用sleep/usleep/time_sleep_until/time_nanosleep。(下文中使用sleep泛指所有睡眠函数)

    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的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:swoole
    上一篇:swoole能在windows下使用吗 下一篇:为什么要在 Swoole 上运行 Laravel?
    20期PHP线上班

    相关文章推荐

    精选22门好课,价值3725元,开通VIP免费学习!• php Swoole实现毫秒定时计划任务(详解)• 利用 webSocket 与 Swoole 打造一个小型聊天室(协程)• 最新的swoole-cli能支持Windows环境了!• 详细整理swoole知识点(总结分享)• nodejs与swoole的不同是什么
    1/1

    PHP中文网