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 に答える