如何在PHP中打开命名管道时防止fopen()挂起

时间:2014-08-11 18:21:33

标签: php fopen

我有一个看起来像这样的命名管道文件:

prw-r--r-- 1 root root 0 Aug 11 17:01 /tmp/debug

当我在PHP中执行类似的操作时:

$fp = fopen("/tmp/debug", "r");

它挂起(即永不返回)。有没有办法让这个呼叫返回和/或超时?

(编辑)

请注意,我希望一个进程使用写权限打开此管道,另一个进程打开具有读取权限的管道。有人正在写这个管道,而其他人正从这个管道读取。问题是读者有时会挂在fopen()上 - 无论是否成功,我都想要返回。

1 个答案:

答案 0 :(得分:0)

http://php.net/manual/en/function.stream-set-timeout.php

注意:

  

注意:为了便于携带,强烈建议您始终使用''使用fopen()打开文件时标记。

也许这会有所帮助。

另外,请阅读此帖How to use named pipes in PHP between different functions or even different processes without fork?