最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
當前位置: 首頁 - 科技 - 知識百科 - 正文

php是單進程還是多進程

來源:懂視網 責編:小采 時間:2020-11-27 15:02:19
文檔

php是單進程還是多進程

php是單進程還是多進程:要想寫出一個php多進程的程序,其實就像把大象放在冰箱里有幾步一樣簡單。php實現多進程簡單來說就三步:創建子進程,管理子進程,處理子進程。說起來簡單,其中涉及到的知識卻是不少,比如說你得知道每個進程都有一個進程號(pid),還得知道命令行是如何執
推薦度:
導讀php是單進程還是多進程:要想寫出一個php多進程的程序,其實就像把大象放在冰箱里有幾步一樣簡單。php實現多進程簡單來說就三步:創建子進程,管理子進程,處理子進程。說起來簡單,其中涉及到的知識卻是不少,比如說你得知道每個進程都有一個進程號(pid),還得知道命令行是如何執
要想寫出一個php多進程的程序,其實就像把大象放在冰箱里有幾步一樣簡單。

php實現多進程簡單來說就三步:創建子進程,管理子進程,處理子進程。說起來簡單,其中涉及到的知識卻是不少,比如說你得知道每個進程都有一個進程號(pid),還得知道命令行是如何執行php文件之類的。(推薦學習:PHP視頻教程)

php多進程需要pcntl,posix擴展支持,可以通過 php -m 查看。

第一步的創建子進程,用到的是pcntl_fork()函數,函數返回值通常為0,失敗時返回-1。我先舉一個創建子進程的直觀小栗子:

 $ppid = posix_getpid();
 $pid = pcntl_fork();
 if ($pid == -1) {
 throw new Exception('fork子進程失敗!');
 } elseif ($pid > 0) {
 cli_set_process_title("我是父進程,我的進程id是{$ppid}.");
     sleep(30); // 保持30秒,確保能被ps查到
 } else {
 $cpid = posix_getpid();
 cli_set_process_title("我是{$ppid}的子進程,我的進程id是{$cpid}.");
 sleep(30);
 }

第二步的管理子進程,使用的是信號。簡單來說,就是父進程里使用兩個函數pcntl_signal()和pcntl_signal_dispatch,負責給子進程安裝信號處理器和分發工作。 這個步驟就先如此簡單介紹一下,因為涉及到一個回調函數的概念,以后我會補上更全面地內容。

第三步的處理子進程,也是需要兩個函數。一個是發送終止信號的posix_kill()函數,一個是等待子進程狀態的pcntl_waitpid()函數,這樣就可以實現跟子進程共同完成的任務的目的了。

所以,后端開發就是這樣,很多以為會復雜的東西,其實步驟很清晰,基本都屬于用到的知識多,用到的函數卻不多這樣。所以入門的時候就硬著頭皮學下去好了,要相信自己總有一天可以很清楚明白。

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

php是單進程還是多進程

php是單進程還是多進程:要想寫出一個php多進程的程序,其實就像把大象放在冰箱里有幾步一樣簡單。php實現多進程簡單來說就三步:創建子進程,管理子進程,處理子進程。說起來簡單,其中涉及到的知識卻是不少,比如說你得知道每個進程都有一個進程號(pid),還得知道命令行是如何執
推薦度:
標簽: php 進程 多進程
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
国产精品久久久久精品…-国产精品可乐视频最新-亚洲欧美重口味在线-欧美va免费在线观看