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()时,其解析的原则是:谁在我前面而且离我近我就用谁,全然无视你的代码逻辑。