【问题标题】:Make PHP script call itself after some time一段时间后让PHP脚本调用自己
【发布时间】:2015-08-17 22:45:15
【问题描述】:

我的主机有一些限制,我的脚本运行时间不能超过 2 或 3 秒。但随着数据库变大,完成所需的时间肯定会增加。

所以我考虑让脚本停止它正在做的事情并在 2 秒后调用自己,例如。

首先我尝试使用cURL,然后我尝试使用wget。但是等待响应和超时(例如,使用 cURL,我只需要 ping 脚本,而不是等待响应)或服务器权限(我们用来运行 wget 这样的函数)总是存在问题因为exec 似乎在我的服务器上被禁用,或者类似的东西)。

您认为让 PHP 脚本 ping/call 自己的最佳方法是什么?

【问题讨论】:

  • 这没有任何意义。除此之外,您为什么要花钱购买不能满足您需求的托管环境?您可以花 5 美元/月的价格在数字海洋或类似平台上获得 VPS,然后为所欲为。
  • 听起来您已经超越了普通的虚拟主机,并且您已经准备好使用虚拟服务器,您不会遇到这些限制。虚拟服务器(也称为“云服务器”)每月从 Rackspace、AWS、Digital Ocean 等提供商处开始大约 10-20 美元。
  • 如果脚本自己运行,这将使原始脚本运行超过两秒钟,这将被您的主机杀死。移动主机或查看 cron 作业,看看它们是否支持运行时间超过 2 秒的作业。
  • 在 PHP、close-header、ignore_user_abort 之类的东西中肯定可以实现即发即弃。这不是你想要做的。 3 秒短得不合理,完全随意。
  • @VictorFerreira 这不是您给客户的答案,而是程序员彼此之间会给出的答案。如果您的客户不想为合理的服务器付费,那么他的数据库会受到脚本所用时间的限制。建议升级是完全正常的商业惯例。我们不是在谈论汽车和飞机,更像是踏板车和摩托车。如果您想长途旅行,您需要一辆摩托车。

标签: php rest curl wget


【解决方案1】:

在 Unix/LInux 系统上,我个人建议安排 CRON JOBS 以保持以特定间隔运行脚本

也许这个Link会帮助你

【讨论】:

  • 如果问题是他的脚本运行的时间超过了某些提供商强加的限制,这对他没有帮助。
  • @billynoah 确实如此。我每小时使用 cron 启动脚本。但是我无法控制完成这项工作需要多长时间。头几个月会是 5 或 10 秒。但一年只有 2 或 3 分钟
【解决方案2】:

php 脚本一般不会调用其他 php 脚本。 可能生成一个后台进程,如 here 所示,但我认为这不是你所追求的。如果,那么你最好使用上面讨论的cron

使用相同的脚本每隔 X 秒调用一次函数当然是可能的,但这与您想要的相反,因为它只会延长相关脚本的运行时间。

与您的评论相反,您的问题似乎有些自相矛盾。每隔一段时间调用method() 的进程仍然是一个长时间运行的进程,并且受到与服务器上任何其他进程相同的限制,不管它可能会在短时间内处于空闲状态。

据我所知,您的选择是:

  • 扩展 php max_execution_time 指令,或者如果您的系统管理员愿意,也可以这样做
  • 修改您的脚本,使其在时限内完成
  • 移至新服务器

【讨论】:

    猜你喜欢
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-01
    • 2012-12-09
    • 1970-01-01
    相关资源
    最近更新 更多