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 中国語 Web サイト をご覧ください。

以上がPHPで関数実行のタイムアウトを設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:rango.swoole.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!