暂停PHP脚本以防止超时

暂停PHP脚本以防止超时,php,time,limit,Php,Time,Limit,我有一个PHP脚本,可以在我的服务器上创建大量文件,但不幸的是,它运行的时间太长。我的主机提供商有90秒的时间限制,脚本可能需要一个小时才能完成!设置\u时间\u限制被宿主提供程序阻止,并且构建睡眠函数也不会真正暂停脚本。是否有其他方法可以内置暂停,使其在90秒后不会退出 谢谢! Sander在不了解更多代码的情况下有点困难,但我认为您必须编写代码,以便多次调用脚本。 是否有可能运行cron作业?脚本可以在x分钟内运行,并将嵌套的y个文件放入队列中 你为什么要首先制作这些文件?听起来不是个好主意

我有一个PHP脚本,可以在我的服务器上创建大量文件,但不幸的是,它运行的时间太长。我的主机提供商有90秒的时间限制,脚本可能需要一个小时才能完成!设置\u时间\u限制被宿主提供程序阻止,并且构建睡眠函数也不会真正暂停脚本。是否有其他方法可以内置暂停,使其在90秒后不会退出

谢谢!
Sander

在不了解更多代码的情况下有点困难,但我认为您必须编写代码,以便多次调用脚本。 是否有可能运行cron作业?脚本可以在x分钟内运行,并将嵌套的y个文件放入队列中

你为什么要首先制作这些文件?听起来不是个好主意。

“处理2条记录大约需要90秒”


让它一次处理一条记录,增加一个计数器,刷新页面,然后点击下一条要处理的记录:-)

不幸的是,没有。您必须将其拆分成更小的部分,或者使用或运行后台作业


还有另一种方法

我可以理解为什么您对主机感到失望,但他们这样做是为了客户的利益。如果一个进程可以占用所有的处理能力,它将减慢服务器上所有其他站点的速度

如果您真的需要对每个记录进行这种处理,那么共享主机不是正确的解决方案;你需要一个专用的服务器

然而,我的猜测是,真正问题的真正解决方案不是向它投入更多的处理能力,而是修复程序的性能。你还没有解释你在做什么,使一个记录需要45秒才能处理,但如果它需要那么长的时间,最好是令人印象深刻的东西。更有可能的是,这只是意味着还有很大的改进空间


我建议您做一点评测,以确定代码的哪些方面使其运行得如此缓慢。通过一点工作,我敢打赌您可以将速度数字降低至少一个数量级,甚至更多。

您是否考虑过重新设计它以处理小批量?PHP支持异步创建文件。哦,忘了说不是本地的。脚本必须由我数据库中一个表的大约415条记录运行,处理2条记录大约需要90秒。这意味着我必须创建207个不同的脚本。这几乎是不可行的,但这甚至是其中一个较小的,所以除非你有这样做的聪明想法,否则它不是一个真正的选项?尝试使用
cron
来启动脚本,通常它没有有限的执行时间。@PLB是的,当然,共享主机块
set\u time\u limit()
但他们肯定会有一个实验性的扩展,它提供了一个功能,可以更容易地做一些愚蠢的事情,让服务器陷入瘫痪:-我正在创建一个大型产品数据库,我希望在每个子域上都有一个单独的页面,其中包含特定类别的结果列表。我有1800个类别和415个子域,我不知道如何才能更容易地做到这一点?所有页面都使用模板,因此每个页面实际上只包含两行,一行是指向模板的链接,另一行是告诉我们要处理的类别。不幸的是,我无法执行Cron作业,也被阻止:(@user动态页面怎么样?所以它们会在请求时生成?你也可以缓存它们…还有,垃圾邮件场(・ω・)我们的who商业模式是围绕谷歌指数化展开的,这就是为什么我不喜欢动态页面,我应该提到这一点。你说的垃圾邮件农场是什么意思?是的,我想说你最好的选择是动态服务页面,并在第一次看到页面时将其缓存。这是迄今为止解决你问题的最好办法!!谷歌仍然会处理这些问题hem与静态页面相同。事实上,谷歌的蜘蛛应该在访问时缓存这些页面。@user“Spam farm”这和你看起来正在做的差不多……谷歌与动态页面有什么关系?或者更好的是,修复程序,使处理两条记录需要更真实的数字,比如0.09秒。两条记录需要90秒。如果你有真正需要这种处理的数据,你就已经知道在sha上使用PHP红色主机是错误的解决方案。+1正是我读问题时所想的。