主页demo 聊天室,如果在代码中对某个用户的发言做延时处理,例如: 在文件Applications\Chat\Event.php 的100行位置添加如下代码:
if($client_name=='3333') { sleep(10); }
即用户3333的发言会延时10s在处理。
这个时候发现,用户3333发言后,其它用户立即发言,其它用户的发言会被阻塞,这个怎么解决???
这个是编程常识,sleep会使当前进程进入睡眠,会导致当前进程无法响应其它请求。 workerman在linux下是支持多进程的,如果请求被分配到sleep的进程,则会导致请求无法响应;如果请求被分配到了正常的进程,则会正常响应。
业务代码里面请不要有sleep语句,如果有较重的任务可以交给其它进程处理,或者说交给其它服务器或者集群的进程去处理,这样可以用更多的进程/服务器承担负载,保证业务主流程不阻塞。方法参见http://wenda.workerman.net/?/question/358
这个是编程常识,sleep会使当前进程进入睡眠,会导致当前进程无法响应其它请求。
workerman在linux下是支持多进程的,如果请求被分配到sleep的进程,则会导致请求无法响应;如果请求被分配到了正常的进程,则会正常响应。
业务代码里面请不要有sleep语句,如果有较重的任务可以交给其它进程处理,或者说交给其它服务器或者集群的进程去处理,这样可以用更多的进程/服务器承担负载,保证业务主流程不阻塞。方法参见http://wenda.workerman.net/?/question/358