6

我偶然遇到了这样的事情:

<?php
    declare(ticks=1);

    // using a function as the callback
    register_tick_function('my_function', true);

    // using an object->method
    $object = new my_class();
    register_tick_function(array(&$object, 'my_method'), true);
?>

可以在register_tick_function找到。

我想知道在 php 中使用它是否阻塞?

编辑: 我的意思是,如果我在同一个线程上启动了一个以上的 php 滴答声,它是否能够在其他滴答声运行时在后台处理 IO,或者它是否需要等待每个滴答声放弃控制?

4

1 回答 1

2

勾选功能被阻塞。PHP 通常不(本机)支持在同一请求中并行执行。所以不,您将无法在后台处理 IO 或类似的事情。

ticks 所做的是或多或少地在每个语句之后插入对 tick 函数的调用。所以你得到的是这样的:

tick();
$a = 1;
tick();
$b = 2;
tick();
// ...

它的行为就像那样:)

不过,只是为了让您了解这是否真的很重要:当在 JS 中执行回调(例如触发超时/事件)时,它就像阻塞一样。

于 2013-03-23T10:46:25.553 回答