【问题标题】:Non-blocking open of pipe in PHPPHP中管道的非阻塞打开
【发布时间】:2014-10-07 10:20:49
【问题描述】:

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

【问题讨论】:

    标签: php linux named-pipes


    【解决方案1】:

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

    fopen($pipename, "w+")
    

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-09
      • 2010-12-16
      • 1970-01-01
      • 2013-02-13
      相关资源
      最近更新 更多