当前位置: 首页 > 知识库问答 >
问题:

PHP脚本在60秒后超时

蒋曾笑
2023-03-14

我正在写一个php脚本,它访问远程服务器上的csv文件,处理数据,然后将数据写入本地MySQL数据库。因为要处理和插入数据库的数据太多(50000行),所以脚本运行时间超过60秒。我的问题是,脚本在60秒后超时。

为了确保这不是MySQL的问题,我创建了另一个进入无限循环的脚本,它也会在60秒时超时。

我尝试增加/更改Ubuntu服务器上的以下设置,但没有帮助:max_execution_timemax_input_timemysql.connect_timeoutdefault_socket_timeoutapache2.conf文件中的TimeOut值。

这是否可能是一个问题,因为我正在从web浏览器访问PHP文件?网络浏览器有超时限制吗?

任何帮助都将不胜感激。

共有3个答案

宗政霄
2023-03-14

迈克尔,

您的问题应该来自PHP文件,而不是访问它的web浏览器。

您是否尝试过将以下行放在PHP文件的开头?

set_time_limit(0);
ini_set ('max_execution_time',  0);

PHP有两个配置文件,一个用于Apache,一个用于CLI,这解释了为什么在命令行中运行脚本时没有超时。你给我的phpinfo最大执行时间是6000

请参阅设置时间限制文档。

萧英光
2023-03-14

我终于找到了请求超时的原因。问题在于虚拟服务器托管。

来自网络浏览器的请求被发送到托管服务器,然后托管服务器将请求引导到虚拟服务器(就像一个独立的服务器)。因为托管服务器在60秒后没有从虚拟服务器获得响应,所以它会超时并向网络浏览器发送响应,并准确地说这一点。同时,虚拟服务器仍在处理脚本。

当虚拟服务器最终完成对脚本的处理时,为时已晚,因为宿主服务器已经向前端用户返回了超时错误。

由于托管服务器用于托管多个虚拟服务器(针对多个不同的用户),因此通常无法更改此服务器上的超时设置。

因此,最终结论是:虚拟主机无法避免超时错误。如果这是一个严重的问题,您可能需要考虑使用专用服务器托管。

邴兴为
2023-03-14

要想突破这个限制,最简单、干扰最小的方法就是将这一行添加到脚本中。

然后,您只是修改了这个脚本的执行时间,而不是修改了所有PHP脚本,如果您修改了两个PHP脚本中的任何一个,那么情况就是这样。INI文件

ini_set ('max_execution_time',  -1);

当您试图修改php时。ini文件我猜您修改了错误的一个,有两个,一个仅用于PHP CLI,另一个用于运行Apache的PHP。

为了便于将来查找php apache使用的实际文件,只需执行以下操作

<?php
phpinfo();
?>

并查找加载的配置文件

 类似资料:
  • 我正在运行一个Nginx PHP-FPM服务器,我有一个脚本,应该在30分钟内执行。240秒后,它停止工作,并从Nginx返回502网关错误。 执行的PHP-FPM日志: [03-May-2013 19:52:02]警告:[池www]child 2949,脚本'/var/www/shell/import_db。php'(请求:“GET/shell/import_db.php”)执行超时(239.9

  • 我已经使用Selenium好几个月了,我们用它来自动化一些内部测试过程。剧本一直很顺利。我最近使用FF 27.01升级到了C#2.40.0 webdriver,我们的脚本现在在随机的地方失败,出现以下错误。 我设法追踪到的最新错误是一行代码: 令人恼火的是,试图解决这个问题被证明是困难的,就像我在本地机器上运行测试一样,调试通过了。此外,如果我在运行测试的构建机器上通过NUNIT runner运行

  • 我已经在裸机ubuntu服务器上安装了kubernetes,下面是kubectl版本命令的输出 客户端版本:Version.info{Major:“1”,Minor:“6”,GitVersion:“V1.6.0”,GitCommit:“FFF5156092B56E6BD60FFF75AAD4DC9DE6B6EF37”,GitTreEstate:“Clean”,BuildDate:“2017-03-

  • 我很难弄明白为什么我的观点一分钟后就改变了。 在本例中,当我将文本从更改为并在重新加载浏览器时,更改仅在一分钟后生效。我尝试清空缓存(如类似问题中所建议的),使用CacheKiller扩展重新启动服务器,但没有任何更改。 我错过什么了吗?

  • 当我的用户使用我的应用程序时,数据会发送到Firebase,但我只希望数据在删除之前存储60秒。 如何在服务器端60秒后自动删除存储在Firebase上的数据并自动更新我的RecycleView客户端?

  • 我们公司的应用程序遇到了崩溃,但这个问题不一定存在,我现在无法重现这个问题,我们可以为我提供下一个解决方案的想法 id.finalize()id是RandomAccessFile的子类。 此堆栈跟踪是: