您好,登錄后才能下訂單哦!
這篇文章主要介紹了php死循環會不會報錯的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇php死循環會不會報錯文章都會有所收獲,下面我們一起來看看吧。
php死循環不會報錯;死循環是指無法靠自身的控制終止的循環,在編程中,指一個靠自身控制無法終止的程序;而死循環不是錯誤,因為程序就是要它一直循環下去;如果死循環編譯報錯,停止編譯,那么需要死循環的程序就沒辦法實現。
php死循環會報錯嗎?
不會報錯。
死循環不是錯誤,因為有些程序就是要它一直循環下去--“死循環”,需要結束時, Ctrl+C。
如果死循環編譯報錯,停止編譯,那么需要死循環的程序就沒辦法實現了。
相關介紹:
死循環(endless loop)是指無法靠自身的控制終止的循環,在編程中,一個靠自身控制無法終止的程序。
例如:
php一般的死循環實現方式如下:
function doAnalisis($param1,$param2){
$runFile = ROOT_PATH."Log/runprocess/player{$param1}.{$param2}.run";
$dieFile = ROOT_PATH."Log/runprocess/player{$param1}.{$param2}.die";
clearstatcache(); // 清除文件緩存,不然獲取最后訪問時間會出錯
//判斷是否需要重啟
if(file_exists($runFile)){
//重啟檢測設為300s,當300s中未對runFile進行訪問時,重啟進程
if(time() - fileatime($runFile) < 300){
return;
}else{
$pid = file_get_contents($runFile);
shell_exec("ps aux | grep '{$_SERVER['PHP_SELF']}' | grep 'Cms/Process/playAnalisis/roomid/{$param1}&pNum={$param2}' | grep -v 'grep' | awk '{print $2}' | grep {$pid} | xargs --no-run-if-empty kill");
}
}
//啟動進程
if(!file_put_contents($runFile, getmypid())){
return;
}
//處理牌局
while (true) {
//檢查重啟
if(file_exists($dieFile)){
unlink($runFile) && unlink($dieFile);
return;
}
//更新文件修改時間
touch($runFile);
//從緩存或者從其它地方獲取數據來源
$data = [];
if( empty($data) ){
sleep(1);
continue;
}
//業務邏輯處理
foreach($data as $gamb) {
}
}
}
說明:
通過while touch不斷的修改文件的修改時間來確保進程的運行態。
通過檢查run文件的修改時間來判斷進程是否不存在需要重啟 。
可以根據傳遞的參數啟動多個進程對數據進行處理。
關于“php死循環會不會報錯”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“php死循環會不會報錯”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。