程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 為PHP函數執行設置超時

為PHP函數執行設置超時

編輯:關於PHP編程

如何防止一個函數執行時間過長呢?在PHP裡可以用pcntl時鐘信號+異常來實現。

代碼如下:

declare(ticks = 1);
    function a(){
    sleep(10);
    echo "a finishi\n";
}
function b(){
    echo "Stop\n";
}
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 "timeout\n";
}

b();
a();
b();

  

原理是在函數執行前先設定一個時鐘信號,如果函數的執行超過規定時間,信號會被觸發,信號處理函數會拋出一個異常,被外層代碼捕獲。

這樣就跳出了原來函數的執行,接著執行下面的代碼。如果函數在規定的時間內,時鐘信號不會觸發,在函數結束後清除時鐘信號,不會有異常拋出。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved