Php 如何增加读取超时错误发生之前的时间?

Php 如何增加读取超时错误发生之前的时间?,php,firefox,zend-framework,timeout,Php,Firefox,Zend Framework,Timeout,我用PHP编写了一个脚本,执行[数千张图片的图像处理]需要很长时间。这是一米小时——可能是5小时 经过15分钟的处理,我得到了错误: 错误 无法检索请求的URL 尝试检索URL时遇到以下错误:我单击的URL 系统返回:[无错误] 等待从网络读取数据时发生超时。网络或服务器可能已关闭或拥塞。请重试您的请求 您的缓存管理员是网站管理员 我需要的是让脚本运行更长的时间 现在,以下是所有技术信息: 我用PHP编写,并使用Zend框架。我正在使用Firefox。处理的长脚本在单击链接后完成。显然,由于

我用PHP编写了一个脚本,执行[数千张图片的图像处理]需要很长时间。这是一米小时——可能是5小时

经过15分钟的处理,我得到了错误:


错误 无法检索请求的URL

尝试检索URL时遇到以下错误:我单击的URL

系统返回:[无错误]

等待从网络读取数据时发生超时。网络或服务器可能已关闭或拥塞。请重试您的请求

您的缓存管理员是网站管理员


我需要的是让脚本运行更长的时间

现在,以下是所有技术信息: 我用PHP编写,并使用Zend框架。我正在使用Firefox。处理的长脚本在单击链接后完成。显然,由于脚本还没有结束,我看到了链接所在的网页,网页浏览器写着“等待…”。 15分钟后发生错误

我试图对Firefox:config进行更改,但没有成功。我不知道,但在其他地方可能需要更改

有什么想法吗

谢谢。请使用设置时间限制

这里的文档

使用设置时间限制

这里的文档

设置时间限制(0)只会影响脚本的服务器端运行。您收到的错误纯粹是浏览器端的错误。您必须发送一些东西,以防止浏览器判断连接已断开-即使输出的单个字符(后跟
flush()
,以确保它实际通过线路发送)也可以。可能每个处理过的图像一次,或者在固定的时间间隔内(如果最后一个字符发送时间超过5分钟,则输出另一个字符)

如果不需要任何中间输出,可以执行
忽略用户中止(TRUE)
,这将允许脚本保持运行,即使连接从客户端关闭。

设置时间限制(0)只会影响脚本的服务器端运行。您收到的错误纯粹是浏览器端的错误。您必须发送一些东西,以防止浏览器判断连接已断开-即使输出的单个字符(后跟
flush()
,以确保它实际通过线路发送)也可以。可能每个处理过的图像一次,或者在固定的时间间隔内(如果最后一个字符发送时间超过5分钟,则输出另一个字符)


如果您不需要任何中间输出,您可以执行
忽略用户\u中止(TRUE)
,这将允许脚本继续运行,即使连接从客户端关闭。

如果您可以分批处理工作,则在处理X图像后,会显示带有一些javascript(或元重定向)的页面在它上面打开链接


冲洗并重复。

如果您可以分批处理您的工作,在处理X图像后,将显示带有一些javascript(或元重定向)的页面,以打开链接


冲洗并重复。

对整个过程进行配料也有额外的好处,即一旦出现问题,您不必重新开始整个过程

如果您在自己的服务器上运行并且可以脱离安全模式,那么您还可以分叉后台进程来完成实际的繁重工作,而不依赖于您的浏览器视图。如果您处于多核或多处理器环境中,您甚至可以在任何时候调度多个正在运行的进程


我们已经为大型计算脚本做了类似的事情;进程的同步发生在共享数据库上——但幸运的是,它们的进程是如此独立,我们唯一需要看到的是它们的完成或终止。

批处理整个进程还有一个额外的好处,即一旦出现问题,您不必重新开始整个过程

如果您在自己的服务器上运行并且可以脱离安全模式,那么您还可以分叉后台进程来完成实际的繁重工作,而不依赖于您的浏览器视图。如果您处于多核或多处理器环境中,您甚至可以在任何时候调度多个正在运行的进程


我们已经为大型计算脚本做了类似的事情;进程的同步发生在共享数据库上——但幸运的是,它们的进程是如此独立,我们只需要看到它们的完成或终止。

如果进程运行数小时,那么您可能应该考虑批处理。因此,您只需存储图像处理请求(在文件、数据库或任何适合您的文件中),而不是启动图像处理。然后,服务器上运行的调度(cron)进程将接收该请求,该进程将执行实际处理(这可以是一个PHP脚本,它调用set_time_limit(0))。当处理完成时,您可以(通过邮件或任何其他适合您的方式)向用户发出处理完成的信号。

如果处理运行数小时,您可能应该考虑批处理。因此,您只需存储图像处理请求(在文件、数据库或任何适合您的文件中),而不是启动图像处理。然后,服务器上运行的调度(cron)进程将接收该请求,该进程将执行实际处理(这可以是一个PHP脚本,它调用set_time_limit(0))。处理完成后,您可以(通过邮件或任何其他适合您的方式)向用户发出处理完成的信号。

我尝试在长脚本之前编写set_time_limit(0)和set_time_limit(999999),但没有成功。15分钟后我仍然收到错误。我尝试在长脚本之前编写set_time_limit(0)和set_time_limit(999999),但没有成功。15分钟后我还是出错了,我试着
Read Timeout