2013 11 21工作隨筆 PHP開啟多程序

2021-09-23 20:17:06 字數 1532 閱讀 1617

今天被問到乙個問題,php如何開啟多程序才比較穩定。

具體可以參考之前的文章:php的pcntl多程序

有個php程式,內部實現大概是

1

2

3

4

5

6

7

8

9

<?php

$starttime= time();

while(1)

// ... do something

}

意思是這個程式會持續10分鐘,10分鐘迴圈做這同乙個操作

然後開啟乙個cron:

1

*/2 * * * * /usr/local/bin/php ***.php

這個cron每兩分鐘跑乙個前面的php程式

這樣就能保證同時會有5個程式在do something。

首先當然有個do something的php程式:a.php

啟動乙個php父程序,在程式中使用exec:

1

2

3

4

5

<?php

for($i= 0;$i<$count;$i++)

這個方法當然也有很多變種,比如

1 第二個迴圈啟動的程式使用shell來做

2 第乙個do something的函式使用上個方法的持續程序

第一種使用pcntl的方法,感覺起來子程序「是受控制」的

意思就是父程序可以獲取處理子程序的輸出資訊,也可以等待子程序處理完以後做後續操作。

而後面兩種子程序是「不受控制」的。

ps:要想讓後面兩種子程序受控制,或許可以使用一些第三方儲存,比如日誌,比如redis等。

第二種和第三種方法,cron+php的方法,有種好處是不會出現長時間貯存記憶體中的程序。

由於php的底層實現很有可能導致記憶體洩漏,所以乙個「寫的不夠好」的php程式如果長時間一直執行,很有可能導致記憶體使用出現問題。所以不應該讓乙個php程式「長時間執行」。

第二三種方法,乙個程式執行完成之後就會立即結束程序,即使有記憶體洩漏也不會導致任何問題。所以比較讓人放心點。

ps:再說一下,方法一也不是必須要起常駐記憶體的程序,但往往我們做的時候會讓父程序常駐著。

還有啥呢,往往多程序的話要注意併發,可能會用到鎖之類的。因為一般要保證do something的原子性才行。

20131121工作安排及總結

今天來得還算早的,到公司只有8 40,但是,我還是看體育新聞到了現在,繼續控制時間,以後這些內容不要超過9 00,9點之後就應該進入工作狀態了,要不然,對不起提前上班這乙個小時。今天開始正式用咕咚運動跑步了,沒跑多久,算是開個頭吧,跑完後再回來,感覺很不錯,我度過了乙個很好的早晨,繼續,暫時目標是堅...

20110218 工作隨筆

2.今天突然發現前兩天js 中用 getjson的方法都沒辦法正確得到返回值,改為 ajax方法後正常,不知道是何原因 上網查了下挺多人碰到類似的情況 還需要再查 3.android模擬器模擬定位gps 以下未除錯成功,但把步驟先記錄下來再慢慢試 首先得允許location 操作,androidma...

2017 02 24工作隨筆

linux命令 1.軟體路徑加入到path中的 whereis mysql 檢視軟體檔案安裝目錄 which mysql 檢視執行檔案所在路徑 2.如果是原始碼安裝的話,你可以使用 prefix指定安裝路徑,這樣,你可以很輕鬆知道軟體的安裝路徑 3.如果是rpm包安裝的話,可以使用rpm qal查詢...