2013-03-23 141 views
6

我隨意橫跨東西出來,如:是PHP蜱非阻塞

<?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在後臺,而其他蜱運行還是需要等待每個打勾來放棄控制權?

回答

2

滴答函數被阻塞。一般而言,PHP不會(在本地)支持同一請求中的並行執行。所以不,你不能在後臺處理IO,或者類似的東西。

嘀嗒聲的作用是或多或少地在每個語句後插入對tick函數的調用。所以,你得到的是這樣的:

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

而且它的行爲就像這樣:)

雖然,只是讓你明白這是否是真正顯著:當一個回調JS執行(例如超時/事件被觸發),那麼它就像阻塞一樣。

+0

我完全意識到非阻塞問題,我應該把問題稍微好一點,我已經更新了問題以反映這一點。 – WojonsTech 2013-03-23 10:49:53

+0

@WojonsTech對不起,我不明白你的意思。 Tick函數與PHP中的其他函數一樣是阻塞的。所以不行,他們不能等待IO執行其他蜱,或類似的東西。 – NikiC 2013-03-23 10:52:16

+0

多數民衆贊成在罰款似乎你已經回答了我的問題,幾乎滴答函數不會跳過蜱周圍時,他們是空閒它按順序處理它們 – WojonsTech 2013-03-23 10:54:36