php是非阻塞的吗?

时间:2013-03-23 10:37:33

标签: php nonblocking

我随机发现了以下内容:

<?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 tick运行它能够在后台处理IO而其他滴答运行或是否需要等待每个滴答来控制?

1 个答案:

答案 0 :(得分:2)

勾选功能正在阻止。 PHP通常不(本机地)支持在同一请求中并行执行。所以不,你将无法在后台处理IO,或类似的东西。

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

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

它的行为就像那样:)

但是,只是让你明白这是否真的很重要:当在JS中执行回调时(例如,触发了超时/事件),那就像阻塞一样。