PHP脚本在45秒后超时

Dav*_*e C 5 php timeout

我正在运行一个巨大的导入到我的数据库(大约20万条记录),我的导入脚本超时问题严重.我用我的手机作为秒表,发现每次通过它的时间恰好是45秒(内部服务器错误)......它一次只能做大约200条记录,有时甚至更少.我扫描了我的phpinfo(),没有设置为45秒; 所以,我对它为什么会这样做一无所知.

我的max_execution_time设置为5分钟,我的max_input_time设置为60秒.我也试过设置set_time_limit(0); ignore_user_abort(1); 在我的页面顶部,但它不起作用.

注意我的错误文件:"脚本标头的过早结束"作为执行错误也可能会有所帮助.

非常感谢任何帮助.

小智 15

我尝试了这个页面上的所有解决方案,当然,从命令行运行:

php -f filename.php
Run Code Online (Sandbox Code Playgroud)

正如布伦特所说的那样是明智之举.

但是,如果你真的想运行在浏览器中,有45秒500内部服务器错误后保持超时的脚本(因为我发现我的重建phpBB的搜索索引时)再有就是它是由mod_fcgid引起了很好的机会.

我有一个Plesk VPS,我通过编辑文件修复它

/etc/httpd/conf.d/fcgid.conf
Run Code Online (Sandbox Code Playgroud)

具体来说,我改变了

FcgidIOTimeout 45
Run Code Online (Sandbox Code Playgroud)

FcgidIOTimeout 3600
Run Code Online (Sandbox Code Playgroud)

3600秒= 1小时.对于大多数人来说应该足够长,但如果需要可以向上调整.我看到一个例子在那里引用了7200秒.

最后,重新启动Apache以使新设置处于活动状态.

apachectl graceful
Run Code Online (Sandbox Code Playgroud)

HTH有人.这已经困扰了我6个月了!

干杯,

丰富

  • HTH ="希望这有助于" (3认同)

zom*_*bat 0

您很可能会遇到服务器上的强制资源限制,尤其是在服务器不完全受您控制的情况下。

假设它是某种类型的 Linux 服务器,您可以ulimit -a在命令行上查看资源限制。 ulimit -t还将向您显示 CPU 时间的限制。

如果您的 CPU 有限,您可能必须分批处理导入。