phpは関数の最大実行時間を設定します

高洛峰
リリース: 2016-10-14 10:21:35
オリジナル
1197 人が閲覧しました

関数の実行に時間がかかりすぎるのを防ぐにはどうすればよいですか? 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();
ログイン後にコピー

を実現できます。原理は、関数の実行前にクロック信号を設定することです。関数の実行が指定された時間を超えると、シグナルがトリガーされます。処理関数が外部コードによって例外をスローします。これにより、元の関数の実行が中断され、次のコードが実行されます。関数が指定された時間内にある場合、クロック信号はトリガーされず、関数の終了後にクロック信号はクリアされ、例外はスローされません。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート