一、php中pcntl_fork函數概述
pcntl_fork()函數是php中用于創建子進程的一個函數,返回創建的子進程的pid。
該函數創建子進程具體fork的過程:
(1)調用該函數即創建一個子進程,創建成功父進程返回子進程的pid,子進程返回0;
(2)創建子進程實際上對父進程的一個拷貝,共享代碼空間,拷貝父進程的數據,也就是說父進程改變父進程的數據,子進程改變子進程的數據變量等;
二、示例代碼分析
代碼示例:
<?php $curr_pid = posix_getpid();//獲取當前的進程id //將當前進程的id寫入文件中 echo '當前進程:'.$curr_pid.PHP_EOL; //開始創建子進程 $son_pid = pcntl_fork();//返回子進程的id //查看當前進程 echo '創建子進程之后當前的進程為:'.posix_getpid().PHP_EOL; //創建了子進程之后 if($son_pid > 0){ echo '子進程id:'.$son_pid.PHP_EOL; }
以上代碼執行后結果為:
示例代碼分析:
(1)發現創建了子進程之后,系統會切換到子進程中,而子進程中的代碼是從含有pcntl_fork函數的那行執行的
(2)創建子進程之后,子進程的代碼段是拷貝pcntl_fork函數及之后的代碼段,之前的代碼段并不拷貝,但是具體的數據變量子進程仍然會拷貝
(3)可見,fork之后程序會分叉執行,即子進程執行
三、pcntl_fork的業務場景舉例
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。
新聞熱點
疑難解答
圖片精選