先了解下PHP低级语句的意思:粗略的理解意思就是写的每一条PHP语句都可以看做一条低级语句。可以是简单的以分号结尾的一条语句;或者完整的if/elseif,while,do...while,for,foreach,switch,try...catch等算一个语句;或者{} 括出来的语句块;还有declare块本身也是一条语句。
大概了解了低级语句的意思后来看看declare(ticks=N);的用法,它通常会跟 register_tick_function("function_name") 一起使用。大概作用是:在declare(ticks=N){} 的代码段里,每执行N条语句 就会触发由register_tick_function("function_name") 注册的function_name函数。如:
<?php
function tick_handler ()
{
echo "触发tick函数<br />" ;
}
register_tick_function ( 'tick_handler' );
declare( ticks = 1 ){
$a = 1; //这是一条低级语句
$b = 2; //这是一条低级语句
$c = 3; //这是一条低级语句
}//declare本身也是一条低级语句
?>
上面会输出如下:
ticks设置的是1,所以在declare括起来的代码段里,每执行1条低级语句都会触发由register_tick_function ( 'tick_handler' );注册的函数tick_handler()。一共输出4条。如果设置的ticks=2,那就是每执行2条语句才会触发tick_handler()。这里测试的语句是很简单的3个赋值语句,也可以使用for循环来试下:
<?php
function tick_handler ()
{
echo "触发tick函数<br />" ;
}
register_tick_function ( 'tick_handler' );
declare( ticks = 1 ){
for($i=0;$i<3;$i++){
}//每次循环都相当于执行了一条语句
}//declare本身也是一条低级语句
?>
输出结果是:
一个循环4次 加上declare本身,所以输出5次“触发tick函数”。
我测试的都是在declare括起来的代码段里,其实也可以把declare( ticks = 1 );放在第一行位置,不用{}括起来语句,则就是对它下面的所有语句都有效果。另外放在第一行和不放在第一行输出的次数还有点不一样,感兴趣的可以测试下。