編碼的世界 / 優質文選 / 文明

php如果執行一個死循環及後台自動執行


2022年5月24日
-   

前幾天接到一個項目,需要做一個後台自動刷閱讀量和點贊的數量。 剛接觸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),才能終止。 而且不使用斷線執行,終止死循環更為理想一些。不過,有時候也會出現無法終止的問題。







開發者漲薪指南


48位大咖的思考法則、工作方式、邏輯體系

熱門文章