php_PHP チュートリアルの pcntl_alarm 関数のタイムアウト制限を設定する

WBOY
リリース: 2016-07-13 10:50:11
オリジナル
910 人が閲覧しました

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

この関数の説明を参照するには、PHP 公式にアクセスしてください。

pcntl_alarm (PHP 4 >= 4.3.0、PHP 5)

pcntl_alarm — プロセスのアラームクロック信号を設定します

説明¶int pcntl_alarm (int $秒)

指定した秒数後に SIGALRM シグナルをプロセスに送信するタイマーを作成します。 pcntl_alarm() を呼び出すたびに、以前に設定されたアラーム信号がキャンセルされます。

パラメータ¶秒 待機する秒数。秒を 0 に設定すると、アラーム信号は作成されません。

戻り値¶最後のアラーム予約まで(アラーム信号送信前)の残り秒数を返​​します。前回のアラーム予約がない場合(または前回の予約が完了している場合)は0を返します。


コードは次のとおりですコードをコピー
宣言(ティック = 1);
関数a()
{
睡眠(10);
「終了」をエコーし​​ます;
}
関数 b()
{
エコー「停止」;
}
関数c()
{
usleep(100000);
}

関数 sig()
{
新しい例外をスローします;
}

試してみてください
{
// アラーム信号を 1 秒ごとに実行するように設定します
pcntl_alarm(1);
//アラーム信号をインストールし、コールバックをバインドします
pcntl_signal(SIGALRM, "sig");
あ();
//アラーム信号をキャンセル
pcntl_alarm(0);
}
catch(例外 $e)
{
エコー「タイムアウト」;
}

b();
あ();
b();


添付、pcntl拡張機能のインストール

pcntl拡張機能はphpのマルチスレッド操作をサポートできます

PHP を再コンパイルした後、構成プロンプトに --enable-pcntl を追加します

トラブルを避けるために、直接コンパイルしてください。

コードは次のとおりですコードをコピー# cd /usr/local/src/php-5.2.6/ext/pcntl
#phpize
# ./configure --with-php-config=/usr/local/php/bin/php-config
# 作成&&作成インストール

pcntl.so php.iniに追加OK

http://www.bkjia.com/PHPjc/632645.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/632645.html技術記事原理は、関数の実行前にクロック信号を設定することです。関数の実行が指定された時間を超えると、信号がトリガーされ、信号処理関数 (sig) が例外をスローし、外側の層に置き換えられます。 ...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート