2014-10-07 140 views
0

我必須從需要寫入fifo的php腳本打開一個命名的fifo,但它可能並不總是在讀取結束時打開。現在我使用的是fopen,但是當fifo的讀取結束沒有打開時它總是阻塞。在php中有沒有相當於UNIX的int open(pname, O_WRONLY | O_NONBLOCK),所以當fifo沒有打開時立即返回?在PHP中非阻塞打開管道

回答

0

沒有直接等同於您描述的C函數。但是,你可以使用:

fopen($pipename, "w+") 

操作將立即返回,因爲它獲得讀管道/寫權限,所以讀手柄將始終打開(打開普通的寫權限管會爲讀者阻止打開另一端)

注意:通常人們不想這樣做。沒有辦法知道真正的管道閱讀器是否真的得到了消息。這可能會導致數據丟失。

命名管道最適用於可以保證寫入器和讀取器並行運行的應用。