首頁  >  文章  >  後端開發  >  你了解php中pcntl_fork嗎

你了解php中pcntl_fork嗎

慕斯
慕斯轉載
2021-05-24 15:29:412715瀏覽

#關於pcntl_fork()函數是php- pcntl模組中用於建立進程的函數。本篇文章將會帶領你們一同走進充滿奧秘的PHP中,一起出發吧! ! !

你了解php中pcntl_fork嗎

pcntl_fork()函數是php-pcntl模組中用來建立流程的函數。 (不支援windows)

至於php_pcntl擴充如何安裝開啟這裡就不介紹了,只分析pcntl_fork()這個函數本身。

$one = 123;$one++;$two = time();$pid = [];$pid = pcntl_fork();$three = time();

當:pcntl_fork()函數執行的時候,會建立一個子程序。子進程會複製目前進程,也就是父進程的所有:數據,程式碼,還有狀態。

1.當pcntl_fork()創建子進程成功後,在父進程內,返回子進程號,在子進程內返回0,失敗則返回-1

2 .子進程會複製父進程的程式碼,資料。那就說明:子,父進程擁有的程式碼和資料會一模一樣。

3.重點:子進程會複製父進程的狀態,那麼就有上面的範例程式碼:在第五行執行了pcntl_fork,那麼創建出來的子進程,程式碼也是從第五行開始執行的。 又子進程複製了數據,程式碼。所以,在子行程內同理存在:$one,$two等變數

for ($i = 0; $i < 3; $i++) {
    $pid = pcntl_fork();}sleep(30);

那么:上面的for循环,实际会产生多少个子进程?答案是7个,在linux下,用ps命令将可以看到8个进程(1个父进程,7个子进程)
原因:父進程在                            i                    =                    0                    時                    ,                    創                    建                    出                    一                    個                    子                    進                    程                    0                    ,                    此                    時                    的                    子                    進                    程                    ,                    還                    會                    繼                    續                    執                    行                    循                    環                    。                    創                    建                    出                    屬                    於                    自                    己                    的                    子                    進                    程                    。                    同                    理                    :                         i=0時,建立一個子進程0,此時的子進程,也會繼續執行循環。創建出屬於自己的子進程。同理:           i= 0##一程式#0##, #「循序##環 ##。 建構#於#己

程式

#。

同######理######:################i=1時也會這樣…###### #推薦學習:《###PHP影片教學###》###

以上是你了解php中pcntl_fork嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除