PHPのdeclare関数の詳しい説明

伊谢尔伦
リリース: 2023-03-11 10:56:01
オリジナル
5307 人が閲覧しました

PHP の declare の関数:

一般的な使用法は、declare(ticks=N); です。
例として、この文には 2 つの主要な関数があります:
1。低レベルのステートメントを 1 つ実行します register_tick_function() で登録された function を実行するだけです。
phpコードの文が実行されるたびに(例:$num=1;)、登録したtick関数が実行されることが大まかに理解できます。 用途の 1 つは、コードの特定の部分の実行時間を制御することです。たとえば、次のコードの最後にデッド
ループ がありますが、実行時間は 5 秒を超えることはありません。 php timeout.php

<?php
declare(ticks=1);
// 开始时间
$time_start = time();
// 检查是否已经超时
function check_timeout(){
    // 开始时间
    global $time_start;
    // 5秒超时
    $timeout = 5;
    if(time()-$time_start > $timeout){
        exit("超时{$timeout}秒\n");
    }
}
// Zend引擎每执行一次低级语句就执行一下check_timeout
register_tick_function(&#39;check_timeout&#39;);
// 模拟一段耗时的业务逻辑
while(1){
   $num = 1;
}
// 模拟一段耗时的业务逻辑,虽然是死循环,但是执行时间不会超过$timeout=5秒
while(1){
   $num = 1;
}
ログイン後にコピー

2を実行します。declare(ticks=1); 低レベルのステートメントが実行されるたびに、プロセスに未処理のシグナルがあるかどうかがチェックされます。 テストコードは次のとおりです。 php

その後、 CTL+ c または kill -SIGINT PID を実行すると、実行中のコードが無限ループから抜け出して、pcntl_signal によって登録された関数を実行します。その結果、スクリプト終了時に "Get signal SIGINT and exi" が出力されます
Exit

以上がPHPのdeclare関数の詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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