2014-10-07 71 views
0

我必须从需要写入fifo的php脚本打开一个命名的fifo,但它可能并不总是在读取结束时打开。现在我使用的是fopen,但是当fifo的读取结束没有打开时它总是阻塞。在php中有没有相当于UNIX的int open(pname, O_WRONLY | O_NONBLOCK),所以当fifo没有打开时立即返回?在PHP中非阻塞打开管道

回答

0

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

fopen($pipename, "w+") 

操作将立即返回,因为它获得读管道/写权限,所以读手柄将始终打开(打开普通的写权限管会为读者阻止打开另一端)

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

命名管道最适用于可以保证写入器和读取器并行运行的应用。