溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

swoole和pcntl對比有什么區別

發布時間:2021-01-13 14:37:29 來源:億速云 閱讀:277 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關swoole和pcntl對比有什么區別的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

PHP的進程控制支持實現了Unix方式的進程創建, 程序執行, 信號處理以及進程的中斷。 進程控制不能被應用在Web服務器環境,當其被用于Web服務環境時可能會帶來意外的結果。

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對比有什么區別”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女