我想知道为什么,如何以及何时在PHP中使用ticks:
declare(ticks=1);
// A function called on each tick event
function tick_handler()
{
echo "tick_handler() called\n";
}
register_tick_function('tick_handler');
$a = 1;
if ($a > 0) {
$a += 2;
print($a);
}
Run Code Online (Sandbox Code Playgroud)
str*_*ger 13
rosen_ivanov@abv.bg概述了一个用途:
正如Chris已经指出的那样,ticks不会使你的脚本多线程,但它们仍然很棒.我主要使用它们进行性能分析 - 例如,在脚本的最开头放置以下内容可以监视其内存使用情况:
Run Code Online (Sandbox Code Playgroud)<?php function profiler($return=false) { static $m=0; if ($return) return "$m bytes"; if (($mem=memory_get_usage())>$m) $m = $mem; } register_tick_function('profiler'); declare(ticks=1); /* Your code here */ echo profiler(true); ?>这种方法比仅在脚本末尾调用memory_get_usage更准确.它虽然有一些性能开销:)
warhog@warhog.net描述了另一种用法:
当我第一次想到"wtf,无用的垃圾"时,我读到了关于蜱的信息 - 但后来我发现了一些有用的应用......
你可以声明一个tick函数,它检查你的脚本的每个n次执行是否连接仍然存在,对于某种类型的脚本减少服务器负载非常有用
Run Code Online (Sandbox Code Playgroud)<?php function check_connection() { if (connection_aborted()) { // do something here, e.g. close database connections // (or use a shutdown function for this exit; } } register_tick_function("connection"); declare (ticks=20) { // put your PHP-Script here // you may increase/decrease the number of ticks } ?>
蜱可用于基本的东西,如:
在PHP 4中,您可以使用ticks来实现类似异常的错误处理.
Ticks也可以用于其他事情,比如实现事件驱动的应用程序(例如游戏).
刻度是N块内解析器执行的每个低级语句发生的事件declare。的值是在声明块的指令部分中N指定的。ticks=N
每个刻度上发生的事件使用 指定register_tick_function()。