什么是PHP中使用的刻度?

Jam*_*ang 16 php

我想知道为什么,如何以及何时在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不会使你的脚本多线程,但它们仍然很棒.我主要使用它们进行性能分析 - 例如,在脚本的最开头放置以下内容可以监视其内存使用情况:

<?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);

?>
Run Code Online (Sandbox Code Playgroud)

这种方法比仅在脚本末尾调用memory_get_usage更准确.它虽然有一些性能开销:)

warhog@warhog.net描述了另一种用法:

当我第一次想到"wtf,无用的垃圾"时,我读到了关于蜱的信息 - 但后来我发现了一些有用的应用......

你可以声明一个tick函数,它检查你的脚本的每个n次执行是否连接仍然存在,对于某种类型的脚本减少服务器负载非常有用

<?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
}

?>
Run Code Online (Sandbox Code Playgroud)


jmz*_*jmz 7

蜱可用于基本的东西,如:

  1. 分析脚本
  2. 监控内存使用情况
  3. 计算执行时间
  4. 检查资源,例如数据库连接是否存在

在PHP 4中,您可以使用ticks来实现类似异常的错误处理.

Ticks也可以用于其他事情,比如实现事件驱动的应用程序(例如游戏).


sha*_*mar 3

刻度是N块内解析器执行的每个低级语句发生的事件declare。的值是在声明块的指令部分中N指定的。ticks=N

每个刻度上发生的事件使用 指定register_tick_function()

  • 因为它是(ctrl+c)(ctrl+v)来自[php.net](http://www.php.net/manual/en/control-structs.declare.php#control-structs.declare.ticks) (4认同)
  • 我认为@James Tang 是在问这个功能的用途。我认为他了解蜱虫是什么以及它们的作用。 (2认同)