PHP ZipArchive Timeout


PHP ZipArchive Timeout

我目前正试图找到一种解决方案,以防止PHP脚本在使用ZipArchive类创建.zip时超时。

通过使用set_time_limit()覆盖php.ini中的最大脚本执行时间,我成功地做到了这一点。然而,它不能保证在脚本将运行的服务器上的php.ini中关闭安全模式,并且我没有访问php.ini文件的权限。有没有其他方法可以阻止脚本超时?ZipArchive是否可以作为后台任务运行?

我认为超时不是问题。它将通过max_execution_time的ini_set来解决。但内存限制是个问题。我没有面临关于5.8G目录的zip文件创建的超时问题。但我是faing内存限制的问题。

尝试

ini_set('max_execution_time', 60); //60 seconds = 1 minute
ini_set('max_execution_time', 0); //0=NOLIMIT

但是,共享主机上可能会有限制,所以如果这些功能不能正常工作,请询问服务器的管理员。

我也在努力解决这个问题,set_time_limit在安全模式下的共享主机上不好,或者在服务器上被禁用。

我使用Ajax客户端对PHP的调用来分步骤处理归档,但是这带来了一些新问题。脚本超时和某种"检查点",这样我就可以继续操作了。

因此,我的建议是使用ajax/客户端实现来点击php来完成工作,因为我知道脚本可能不会在一次调用中完成,但可能需要N次调用。尽管在php中一个操作可能需要足够长的时间来超时脚本,但你仍然可以放入逻辑来检查经过的时间,并尝试在超时之前保存状态,并在客户端中覆盖这两种情况以进行超时/手动退出。