php ticks - yaokun123/php-wiki GitHub Wiki

PHP ticks机制

一、怎么定义ticks机制

PHP提供declare关键字和ticks关键字来声明ticks机制。如:declare(ticks = N);

tick是一个事件

tick事件在每运行N条low-level statements就会放生一次,N由declare语句指定(Zend引擎每执行1条低级语句就去执行一次 register_tick_function() 注册的函数。)

能够用register_tick_function()来指定时间的handler,unregister_tick_function()与之相应

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

二、low-level statements低级语句包含哪些?

(1)简单语句:空语句(一个。号)。return, break, continue, throw, goto, global, static, unset, echo, 内置的HTML文本。分号结束的表达式等均算一个语句。

(2)复合语句:完整的if、elseif, while, do...while, for, foreach, switch, try...catch等算一个语句

(3)语句块:{}大括号算一个语句块

(4)declare本身算一个复合语句

三、tick的坑

一定要注意的一点是:declare()不是一个函数!!。准确的说,他是说一个语言结构。因此可能会有一些你意想不到的行为。比方说,当你在一个文件中多次用到declare()时,其解析的原则是:谁在我前面而且离我近我就用谁,全然无视你的代码逻辑。