我的主机设置在超时方面存在问题,但实际上我不知道究竟是哪一个负责。当我在 php 页面中运行此代码时:
<?PHP
sleep(30);
echo "Done";
?>
它给了我"tcp error operation timeout"
。
但是当我把它改成sleep(20)
它运行成功时。所以请帮我找出我的 php ini 文件中的哪个项目导致了这个超时。但是我尝试用谷歌搜索它并且已经尝试了很多建议但没有运气,最后我被困在这一点上让我的 php 脚本上线。
我的主机设置在超时方面存在问题,但实际上我不知道究竟是哪一个负责。当我在 php 页面中运行此代码时:
<?PHP
sleep(30);
echo "Done";
?>
它给了我"tcp error operation timeout"
。
但是当我把它改成sleep(20)
它运行成功时。所以请帮我找出我的 php ini 文件中的哪个项目导致了这个超时。但是我尝试用谷歌搜索它并且已经尝试了很多建议但没有运气,最后我被困在这一点上让我的 php 脚本上线。
根据错误消息,我怀疑这不是 PHP 超时,而是实际的 Web 服务器“拔掉插头”(尽管 30 秒是一个非常短的时间限制)。
这肯定不是正常的 PHP 错误消息,并且您不应该使用 诱导 PHP 超时sleep
,因为这不会占用实际的 CPU 时间。
在不知道您在哪种主机下运行(Apache?Nginx?IIS?共享主机?VPS?等)的情况下,很难知道在哪里,即使你可以改变它。
查看配置中的时间限制。
您可以使用这行代码修改脚本的时间限制:
set_time_limit(60);
默认值 id 30s
。如果你使用 set_time_limit() 内部没有参数,它只会重置计数器,并且可用的总时间将增加 30s。
30 秒是默认的 php 超时,如果你需要sleep(30)
你必须增加超时,有两种方法可以改变它,从 php 脚本。
set_time_limit ( int $seconds );
或者
ini_set('max_execution_time', int $seconds);
我想与所有正在寻找类似问题的人分享这个答案。在花了几个小时寻找根本原因之后,我终于在没有更改任何代码的情况下发现了该Network Error (tcp_error) A communication error occurred: "Operation timed out"
错误disappeared when i ran my script on another machine
,因此the issue was with either my machine or my internet speed
我真的不知道。无论如何,错误可能不仅仅在代码中被发现。