php declare用法详解-PHP问题

资源魔 34 0

php declare的普通用法是“declare(ticks=N);”,其作用是Zend引擎每一执行1条低级语句就去执行一次“register_tick_function()”注册的函数。

保举:《PHP视频教程》

php中declare的作用详解

普通用法是 declare(ticks=N);

拿declare(ticks=1)来讲,这句次要作用有两种:

一、Zend引擎每一执行1条低级语句就去执行一次 register_tick_function() 注册的函数。

能够粗略的了解为每一执行一句php代码(例如:$num=1;)就去执行下曾经注册的tick函数。

一个用处就是管制某段代码执行工夫,例以下面的代码尽管最初有个死轮回,然而执行工夫没有会超越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( 'check_timeout' );
// 模仿一段耗时的营业逻辑
while (1){
    $num  = 1;
}
// 模仿一段耗时的营业逻辑,尽管是死轮回,然而执行工夫没有会超越$timeout=5秒
while (1){
    $num  = 1;
}

二、declare(ticks=1);每一执行一次低级语句会反省一次该过程能否有未解决过的旌旗灯号,测试代码以下:

运转 php signal.php

而后CTL+c 或许 kill -SIGINT PID 会招致运转代码跳出死轮回去运转pcntl_signal注册的函数,成果就是剧本exit打印“Get signal SIGINT and exi”加入

<?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 declare用法详解的具体内容,更多请存眷资源魔其它相干文章!

标签: php php教程 php故障解决 php使用问题 declare

抱歉,评论功能暂时关闭!