php是非阻塞的吗?

Woj*_*ech 6 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);
?>
Run Code Online (Sandbox Code Playgroud)

哪个可以在register_tick_function找到.

我想知道在php中使用这个是否阻止?

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

Nik*_*kiC 2

Tick 函数是阻塞的。PHP 通常不(原生)支持同一请求中的并行执行。所以不,你将无法在后台处理 IO 或类似的事情。

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

tick();
$a = 1;
tick();
$b = 2;
tick();
// ...
Run Code Online (Sandbox Code Playgroud)

它的行为就像那样:)

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