【问题标题】:Setup cron job from php script to run another php script?从 php 脚本设置 cron 作业以运行另一个 php 脚本?
【发布时间】:2012-08-06 21:45:31
【问题描述】:

是否可以在 LAMP 服务器上的 PHP 脚本中设置 cron 作业以运行另一个 PHP 脚本?我是一个有 cron 工作的新手,但我确实非常了解 php。我是否必须从 PHP 访问 shell 才能设置 cron 作业?例如,如果我想在从 call.php 调用 execute.php 后 5 分钟内自动执行它,我将如何编写代码?

编辑:为了清楚起见,我只想在它被调用 5 分钟后运行一次 execute.php,而不是让它每天重复或类似的事情。所以,在cron作业执行完之后,cron作业应该被丢弃。

【问题讨论】:

  • 我已尝试搜索创建 cron 作业的方法,但找不到有关如何从 PHP 进行设置的信息。我不想手动设置它,它需要从 PHP 脚本自动设置。我真的找不到这方面的信息,而且我对 cron 作业知之甚少,除了它们运行预定的作业这一事实。
  • 所以你想运行一个脚本,然后在它完成后,在再次执行之前留出 5 分钟的间隙。而是每 5 分钟一次?如果执行时间过长,这是为了阻止它重叠吗?一个场景在这里会有所帮助。
  • @Waygood 查看我添加到帖子中的编辑,我只希望它运行一次,在它被调用后正好 5 分钟,并且永远不会再运行一次,除非从 execute.php 再次调用它。因此,如果用户访问 call.php,即使用户离开页面、关闭浏览器等,execute.php 也应该在 5 分钟后运行。之后,除非 call.php 再次调用它,否则 execute.php 不会再次运行,在在这种情况下,将创建另一个时间表。
  • 您可以在触发脚本运行完毕后在 shell 中触发 at 命令 - computerhope.com/unix/uat.htm
  • 我认为您或用户将启动 call.php 脚本运行,然后 execute.php 需要在 5 分钟后完成。如果 call.php 1 秒后再次运行会怎样?更好地解释这些脚本正在做什么会有所帮助,并使我们能够更好地计划冲突、溢出等。但到目前为止,@Crontab 通过 exec() 提出的“at”建议将是前进的方向。

标签: php linux cron crontab


【解决方案1】:

Cron 的工作方式并不完全一样,但您可以设置一些东西来创建您想要的功能。

我会首先设置一个 cron 条目以每分钟执行一次 execute.php。

然后,当 call.php 运行时,call.php 在数据库表或平面文件中创建一个条目,其中包含应调用 execute.php 的时间。

当 cron 条目运行时,execute 检查数据库表或平面文件以查看它是否应该运行当时文件中的代码,如果是,则运行它。

【讨论】:

    【解决方案2】:

    在execute.php开头使用sleep

    sleep(5*60);
    //Rest of the code
    

    应该这样调用:

    require_once("execute.php");
    

    但是,call.php 在 5 分钟内不会发送任何响应

    【讨论】:

    • 即使用户在睡眠定时器到期之前离开页面,这是否会运行 execute.php?
    • 现在想想,它只适用于 ajax。如果您是编程新手,这将是相当困难的
    • 我熟悉 AJAX 和 JavaScript,在网络编程方面经验丰富,但对 cron 作业不太了解。
    • 这样就可以了,如果你从ajax调用“call.php”,它会等待5分钟然后运行脚本,即使用户离开页面。只有当你使用 ajax 时,它才会有用、困难
    • 哦,我明白了,所以我使用 AJAX,所以它在后台运行,所以看起来页面没有响应?我想我得到了我现在应该做的。谢谢,这比 cron 作业简单得多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    • 2018-06-11
    • 1970-01-01
    • 2020-02-28
    相关资源
    最近更新 更多