PHP如何為函數執行設定逾時

angryTom
發布: 2023-04-07 16:02:01
轉載
3089 人瀏覽過

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

程式碼如下:

<?php
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();
登入後複製

原則是在函數執行前先設定一個時脈訊號,如果函數的執行超過規定時間,訊號會被觸發,訊號處理函數會拋出一個異常,被外層程式碼捕獲。這樣就跳出了原來函數的執行,接著執行下面的程式碼。如果函數在規定的時間內,時脈訊號不會觸發,在函數結束後清除時脈訊號,不會有異常拋出。

 更多PHP相關知識,請造訪PHP中文網

以上是PHP如何為函數執行設定逾時的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:rango.swoole.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!