1. 程式人生 > >php如果執行一個死迴圈及後臺自動執行

php如果執行一個死迴圈及後臺自動執行

前幾天接到一個專案,需要做一個後臺自動刷閱讀量和點讚的數量。
剛接觸php沒多久。但是知道,一個死迴圈是無法執行的。
百度了一會。主要用到一下幾項技術。
sleep()函式;主要是讓死迴圈得到休息,不至於崩潰。
set_time_limit(0);設定執行最長時間,0為無限制。
ignore_user_abort(true); 關閉瀏覽器,伺服器也能自動執行。

我自己寫的控制器方法太長了,這裡我引用一段百度的程式碼作為例子。

<?php
ignore_user_abort(TRUE);
set_time_limit(0);

while (1) {
if(connection_aborted()) {
break
; } //其他邏輯操作 sleep(10); //單位為秒 } ?>

執行過程中我還使用了兩個函式。ob_flush();flush(); 兩個函式須同時使用才會起作用,並且順序也要這樣。 這兩個函式主要是把資料從快取中釋放出來。

按照以上步驟,基本上就能完成一個死迴圈的正常執行。
但是通過實測,發現php執行死迴圈並不理想。在執行過程中,如果想終止,我的做法是給他再傳入一個判斷值。但是執行的時候,有時候傳不進去,瀏覽器一直處於卡死狀態。這時候必須要重啟伺服器(Apache),才能終止。
而且不使用斷線執行,終止死迴圈更為理想一些。不過,有時候也會出現無法終止的問題。