ホームページ  >  記事  >  バックエンド開発  >  PHP宣言の使い方の詳しい説明

PHP宣言の使い方の詳しい説明

藏色散人
藏色散人オリジナル
2020-10-22 09:38:033009ブラウズ

php 宣言の一般的な使用法は "declare(ticks=N);" です。その機能は、Zend エンジンが低レベルのステートメントを実行するたびに、"register_tick_function()" によって登録された関数を実行することです。 。

PHP宣言の使い方の詳しい説明

おすすめ: 「PHP ビデオ チュートリアル

php の宣言関数の詳細な説明

一般的な使用法は、declare(ticks=N);

Declaration(ticks=1) を例にとります。この文には 2 つの主要な機能があります:

1 Zend エンジンが低レベルのステートメントを実行するたびに、 register_tick_function() で登録された関数が 1 回実行されます。

phpコードの文が実行されるたびに(例:$num=1;)、登録したtick関数が実行されることが大まかに理解できます。

1 つの用途は、特定のコード部分の実行時間を制御することです。たとえば、次のコードの最後に無限ループがありますが、実行時間は 5 秒を超えることはありません。

Run 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); 下位レベルのステートメントが実行されるたびに、プロセスが未処理かどうかチェックされます。

Run php signal.php

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

<?php
declare (ticks=1);
pcntl_signal(SIGINT,  function (){
    exit ( "Get signal SIGINT and exit\n" );
});
echo  "Ctl + c or run cmd : kill -SIGINT "  . posix_getpid().  "\n"  ;
while (1){
   $num  = 1;
}
が出力されます」

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。