register_tick_function

(PHP 4 >= 4.0.3, PHP 5, PHP 7, PHP 8)

register_tick_functionРегистрирует функцию для выполнения при каждом тике

Описание

register_tick_function(callable $callback, mixed ...$args): bool

Функция регистрирует callback-функцию, которая вызывается при каждом тике.

Список параметров

callback

Функция, которую требуется зарегистрировать.

args

Возвращаемые значения

Функция возвращает true, если выполнилась успешно, или false, если возникла ошибка.

Примеры

Пример #1 Пример регистрации потактовой функции обратного вызова функцией register_tick_function()

<?php

declare(ticks=1);

function
my_tick_function($param)
{
echo
"Потактовый вызов функции обратного вызова с параметром: $param\n";
}

register_tick_function('my_tick_function', true);

?>

Смотрите также

  • declare
  • unregister_tick_function() - Удаляет функцию из списка зарегистрированных для выполнения на каждом тике

Добавить

Примечания пользователей 2 notes

up
2
Carlos Granados
8 years ago
A working example with variable input for validating the asymptotic analysis of your algorithm:<?php$n = 1000; // Size of your inputdeclare(ticks=1);class Counter {    private $counter = 0;    public function increase()    {        $this->counter++;    }        public function print()    {        return $this->counter;        }}$obj = new Counter;register_tick_function([&$obj, 'increase'], true);for ($i = 0; $i < 100; $i++){    $a = 3;}// unregister_tick_function([&$obj, 'increase']);// Not sure how to de-register, you can use static methods and members in the Counter instead.var_dump("Number of basic low level operations: " . $obj->print());?>
up
0
Peter Featherstone
8 years ago
Due to an implementation bug, the declare(ticks=1) directive leaked into different compilation units prior to PHP 7.0. This is not how declare() directives, which are per-file or per-scope, are supposed to work.Therefore there are different implementations between PHP 5.6 and the correct implementation has been added in PHP 7.0. This means the below script will return different results#index.php<?phpdeclare(ticks=1);$count = 0;register_tick_function('ticker');function ticker() {  global $count;  $count++;}?>#inc.php<?php$baz = "baz";$qux = "qux";?>Running php index.php in the terminal gives:    PHP 5.6 - 7    PHP 7.0 - 5
To Top