主页demo "聊天室“ sleep问题

tianmc

主页demo 聊天室,如果在代码中对某个用户的发言做延时处理,例如:
在文件Applications\Chat\Event.php 的100行位置添加如下代码:

if($client_name=='3333')
{
    sleep(10);
}

即用户3333的发言会延时10s在处理。

这个时候发现,用户3333发言后,其它用户立即发言,其它用户的发言会被阻塞,这个怎么解决???

4654 1 0
1个回答

walkor 打赏

这个是编程常识,sleep会使当前进程进入睡眠,会导致当前进程无法响应其它请求。
workerman在linux下是支持多进程的,如果请求被分配到sleep的进程,则会导致请求无法响应;如果请求被分配到了正常的进程,则会正常响应。

业务代码里面请不要有sleep语句,如果有较重的任务可以交给其它进程处理,或者说交给其它服务器或者集群的进程去处理,这样可以用更多的进程/服务器承担负载,保证业务主流程不阻塞。方法参见http://wenda.workerman.net/?/question/358

  • 暂无评论
年代过于久远,无法发表回答
×
🔝