程式碼如下:
<?php declare(ticks = 1); function a() { sleep(10); echo "a finishin"; } function b() { echo "Stopn"; } function c() { usleep(100000); } function sig() { throw new Exception; } try { pcntl_alarm(1); pcntl_signal(SIGALRM, "sig"); a(); pcntl_alarm(0); } catch(Exception $e) { echo "timeoutn"; } b(); a(); b();
原理是在函數執行前先設定一個時鐘信號,如果函數的執行超過規定時間,信號會被觸發,信號處理常式會丟擲一個異常,被外層程式碼捕獲。這樣就跳出了原來函數的執行,接著執行下面的程式碼。如果函數在規定的時間內,時鐘信號不會觸發,在函數結束後清除時鐘信號,不會有異常丟擲。
以上就是PHP如何為函數執行設定超時的詳細內容,更多請關注TW511.COM其它相關文章!