【问题标题】:In PHP, how can i get fopen to timeout very fast when opening a local file?在 PHP 中,如何在打开本地文件时让 fopen 快速超时?
【发布时间】:2010-09-21 11:26:50
【问题描述】:

我在使用 PHP 时遇到问题,我经常写入文件,有时打开该文件需要很长时间。 完整的描述在这里:

fopen file locking in PHP (reader/writer type of situation)

我的问题是如何让 fopen 在 50 毫秒内超时。 我查看了stream-context-create,但这似乎适用于 HTTP,或者至少,如果它适用于本地文件,我不确定如何在数组中指定选项。

有什么想法吗?

谢谢!
丹尼尔

【问题讨论】:

  • Artefacto 的回答是有效的——但是 PHP 没有复杂的文件处理语义,也没有实现它们所需的低级操作系统访问。如果可能的话,不要使用文件在 PHP 中存储数据

标签: php timeout fopen local-files


【解决方案1】:

我不确定您在此处尝试什么,但在某些平台(不是 Windows,不过)中,您可以使用 n 标志以非阻塞模式打开文件:

$f = fopen("/tmp/foo/bar", "wn+");

这应该立即返回。然后您可能可以使用stream_select,超时时间为 50 毫秒。

我说“可能”是因为没有记录此标志。

【讨论】:

    【解决方案2】:

    php.ini 中的 default_socket_timeout 变量更改为 '1',会有帮助吗?

    【讨论】:

      猜你喜欢
      • 2013-10-17
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      • 2012-07-31
      • 1970-01-01
      • 1970-01-01
      • 2021-07-15
      • 1970-01-01
      相关资源
      最近更新 更多