价格变动在 PHP 中的用途是什么?

php
2022-08-30 22:14:25

我想知道为什么,如何以及何时在PHP中使用刻度:

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

答案 1

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

?>

此方法比仅在脚本末尾调用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
}

?>

答案 2

刻度可用于基本情况,例如:

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

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

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


推荐