在PHP中无阻塞打开管道

时间:2014-10-07 10:20:50

标签: php linux named-pipes

我必须从需要写入fifo的php脚本中打开一个名为fifo,但它可能并不总是在读取端打开。现在我使用fopen,但是当它的读取端没有打开时它总是阻塞。在PHP中是否存在等同于UNIX的int open(pname, O_WRONLY | O_NONBLOCK),以便当它不能立即返回时它会立即返回?

1 个答案:

答案 0 :(得分:0)

没有直接等同于您描述的C函数。但你可以使用:

fopen($pipename, "w+")

操作将立即返回,因为它获得了对管道的读/写访问权限,因此将始终打开读取句柄(打开普通写入访问管道将阻止读者打开另一端)

注意:通常人们不想这样做。没有办法知道真正的管道阅读器是否真正得到了消息。这可能会导致数据丢失。

命名管道最适合可以保证编写器和阅读器并行运行的应用程序。