PHP中管道的非阻塞打开
Posted
技术标签:
【中文标题】PHP中管道的非阻塞打开【英文标题】:Non-blocking open of pipe in PHP 【发布时间】:2014-10-07 10:20:49 【问题描述】:我必须从需要写入 fifo 的 php 脚本中打开一个命名的 fifo,但它可能并不总是在读取端打开。现在我使用fopen
,但是当fifo的读取端没有打开时它总是阻塞。在 php 中是否有相当于 UNIX 的 int open(pname, O_WRONLY | O_NONBLOCK)
以便当 fifo 不打开时立即返回?
【问题讨论】:
【参考方案1】:没有直接等效于您描述的 C 函数。但你可以使用:
fopen($pipename, "w+")
该操作将立即返回,因为它获得了对管道的读/写访问权限,因此将始终打开一个读句柄(打开普通写访问管道将阻止读者打开另一端)
注意:通常人们不想这样做。没有办法知道真正的管道阅读器是否真的收到了消息。这可能会导致数据丢失。
命名管道最适合于可以保证写入器和读取器并行运行的应用程序。
【讨论】:
以上是关于PHP中管道的非阻塞打开的主要内容,如果未能解决你的问题,请参考以下文章