
PHP的历程掌握支撑完成了Unix体式格局的历程建立, 顺序实行, 信号处置惩罚以及历程的中断。 历程掌握不能被应用在Web效劳器环境,当其被用于Web效劳环境时可能会带来不测的效果。 (引荐进修: swoole视频教程)
PCNTL如今运用了ticks作为信号处置惩罚的回调机制,ticks在速度上远远超过了之前的处置惩罚机制。 这个变化与“用户ticks”遵照了雷同的语义。
您能够运用declare() 语句在顺序中指定许可发作回调的位置。这使得我们对异步事宜处置惩罚的开支最小化。在编译PHP时 启用pcntl将一直负担这类开支,不管您的剧本中是不是真正运用了pcntl。
有一个调解是PHP 4.3.0之前的一切pcntl剧本要使其事情,要么在希冀许可回调的(代码)部份运用 declare() ,要么运用declare()新的全局语法 使其在全部剧本范围有用。
Note: 此扩大在 Windows 平台上不可用。
swoole增加了多历程治理模块来替换PHP的pcntl,它比拟pcntl的不同点是:
swoole_process供应了pcntl没有的历程间通讯swoole_process支撑重定向规范输入和输出,在子历程内echo或许读键盘输入能够被重定向为从管道中取数据子历程能够异步化
历程间通讯(IPC)
子历程和父历程之间能够经由过程管道通讯,通报数据。IPC在多历程编程中经常用到,PHP的pcntl模块没有供应IPC的功用,所以功用有范围。而swoole_process供应了这些功用,而且封装了接口。只需挪用接口即可完成历程间通讯。
$worker_num = 8; for($i = 0; $i < $worker_num; $i++) { $process = new swoole_process('callback_function', $redirect_stdout); $pid = $process->start(); $workers[$pid] = $process; } function callback_function(swoole_process $worker) { //echo "Worker: start. PID=".$worker->pid."\n"; //recv data from master $recv = $worker->read(); echo "From Master: $recv\n"; //send data to master $worker->write("hello master\n"); sleep(2); $worker->exit(0); }
read/write 2个要领就是向管道内读写数据。主历程内能够经由过程write/read 向子历程写入,读取数据。
以上就是swoole和pcntl区分的细致内容,更多请关注ki4网别的相干文章!