首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >max_execution_time替代

max_execution_time替代
EN

Stack Overflow用户
提问于 2012-05-10 03:50:16
回答 3查看 1.8K关注 0票数 0

下面是下面的内容:

我正在为其开发的客户端在HostGator上,它将他们的max_execution_time限制在30秒以内,不能被覆盖(我已经尝试过,并且确认它不能通过他们的支持和wiki实现)

我的代码所做的是获取一个上传的文件和.

  1. 循环通过xml。
  2. 获取文件中的所有提要下载链接。
  3. 下载每个xml文件
  4. 分别循环每个文件的每个xml数组,并根据每个项的来源(即文件名)将每个项的信息插入数据库中。

现在,我是否可以以某种方式排队或将工作负载分成多个文件?我知道代码运行得完美无缺,并在插入之前检查每一项是否存在,但我不得不绕开execution_limit。

如果您有任何问题,请告诉我!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-10 04:21:14

timelimit仅在通过when服务器执行PHP脚本时有效,如果您从CLI或作为后台进程执行该脚本,它应该可以正常工作。

请注意,如果您不够小心,执行外部脚本是有点危险的,但它是一个有效的选项。

检查下列资源:

过程控制扩展

具体而言:

pcntl-exec

多头叉

票数 2
EN

Stack Overflow用户

发布于 2012-05-10 04:16:37

您知道您可以通过注册一个关闭处理程序来欺骗max_execution_time吗?在该代码中,您可以再运行30秒;-)

好了,现在有更多有用的东西。

您可以在数据库中添加一个小队列表,以便在脚本中途死亡时跟踪您所在的位置。

  • 获得所有下载链接后,将这些链接添加到表中。
  • 然后下载一个文件并对其进行处理;完成后,从队列中删除(删除)它们。
  • 每次运行时,您都要检查队列中是否还有剩余的工作

为此,您需要多次请求该URL;也许可以使用JavaScript来继续重新加载,直到工作完成为止?

票数 2
EN

Stack Overflow用户

发布于 2013-12-01 10:23:44

我在这种情况下。我的方法和杰克的方法很相似

  • 接受执行时间限制就在那里。
  • 设计应用程序以应对突然退出(查看register_shutdown_function)
  • 确定过程中所有需要时间的部分。
  • 持续保存过程的进度
  • 修改组件,使它们能够从任意点开始,例如XML文件中的位置,或者继续下载要获取的XML链接列表。

对于这个任务,我做了两个模块,导入用于实际处理;TaskManagement用于处理这些任务。

对于调用TaskManager,我使用CRON,这取决于you主机提供给您的内容,如果足够的话。还有一个WebCron。

Jack的JavaScript方法的优点是它只在需要时添加请求。如果没有要执行的任务,那么脚本运行时将非常短,而且可能被高估了*,但仍然如此。缺点是它要求用户一直等待,而不是关闭标签/浏览器、JS支持等等*)在这种时刻,可能比1点点击1次要求小得多。

然后,当然查看性能改进、缓存、跳过不需要/尚未更改的内容等等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10527272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档