【问题标题】:Fopen or File_Put_Contents Timeout option?Fopen 或 File_Put_Contents 超时选项?
【发布时间】:2022-01-14 06:27:59
【问题描述】:

真的很简单,我只想在 fOpen 或 File_Put_Content 中添加一个超时 目前看来超时设置为 30 秒。

等待的时间太长了,该文件正在本地写入文件,如果无法访问或写入文件,则需要立即触发错误消息,而不是在 30 秒后。

我试过了

php.ini default_socket_timeout = 5   // Made no change

PHP 文件内部:

ini_set('default_socket_timeout',2); // Made no change 

尝试了以下代码:

                $context = stream_context_create(array('http'=> array(     'timeout' => 1.0,     'ignore_errors' => true, )));
                $fh = @file_put_contents($file, $string, false, $context);

除了写一个 If 语句并从 X 秒开始倒计时然后做一个 break 退出循环之外,我有点没有想法了。

我只想创建一个包含一些内容的文本文件,如果它无法在几秒钟内将文件写出然后继续前进(所以我可以触发错误)

 if (!is_resource($fh)) { 
// some error handling 
}

通过文档,我什么也没看到,除了这两种方法,还有其他选项可以用来设置简单的超时

【问题讨论】:

  • "此文件正在本地写入文件" - 你的意思是你正在写入本地文件系统?那么你想要什么 HTTP 超时,甚至不适用......?

标签: php timeout fopen file-put-contents


【解决方案1】:

使用不同的设置:

set_time_limit(10);

set_time_limit 限制脚本的最大执行时间。如果达到此值,脚本将返回致命错误。默认限制为 30 秒。

【讨论】:

  • 是的,但这适用于整个程序,我只想在 Fwrite 或 File_Put_Content 函数上使用它
  • @DaveHamilton 您要触发的错误是否应该停止脚本的执行?还是您打算处理它并继续执行?
  • 处理它并继续执行,如果它出错我想顶部写入error_log并继续,因为在我的代码末尾我有一些错误处理来向用户显示通知。致命错误会停止代码的执行。
猜你喜欢
  • 2013-02-15
  • 2011-09-18
  • 1970-01-01
  • 2011-01-31
  • 2019-04-29
  • 2013-11-01
  • 2019-09-01
  • 2011-11-05
  • 1970-01-01
相关资源
最近更新 更多