【问题标题】:How do i execute 5 PHP scripts randomly between 30-120 seconds?如何在 30-120 秒之间随机执行 5 个 PHP 脚本?
【发布时间】:2017-04-04 18:09:58
【问题描述】:

我有一个问题要处理几天。我想在我的 ubuntu 服务器上执行位于 1 个地图中的 5 个 PHP 脚本。

我想让这 5 个脚本以 15-60 秒的间隔随机执行。所以我得到这样的情况:

执行随机脚本 (1-5).php -> 等待 15-60 秒 -> 执行随机脚本 (1-5).php -> 等待 15-60 秒等......

我尝试寻找解决方案,我知道它可以完成,但我找不到正确的命令。我应该只使用 cronjob 还是使用 bash 脚本?

【问题讨论】:

  • 这可以帮助你使用玉米标签unix.stackexchange.com/questions/333197/…
  • Cron 至少只能每分钟运行一次...所以也许您可以通过 cron 每 1 或 2 分钟执行一次主脚本,并使用 sleep(15)sleep(30) 让您的下标执行它们的代码
  • 编写另一个完全按照您所说的执行的 PHP 脚本(执行随机脚本,等待随机时间,重复)。您可以使用screen 在注销时不会关闭的后台会话中手动启动脚本,或者您可以将其作为 cron 作业运行。如果您将其作为作业运行,请考虑到将来某个时刻将启动一个新实例。例如,您可以让它在运行 59 分钟后退出,并将 cron 配置为每小时启动一个新实例。

标签: php bash random cron


【解决方案1】:

一种可能性:

<?php
    $scriptPath = "/some/path/";
    while (true) {
        $scriptId   = rand(1, 5);
        $sleepTime  = rand(15, 60);

        exec("nohup php ".$scriptPath . $scriptId . ".php > /dev/null 2>&1 &");
        sleep($sleepTime);
    }
?>

将上面的代码放在一个名为 loopScript.php 的文件中,然后从命令行启动代码。像这样:

nohup php /path/to/script/loopScript.php > /dev/null 2>&1 

要让脚本在重启时运行,请将以下内容添加到 cron:

@reboot php /path/to/script/loopScript.php > /dev/null 2>&1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    • 2022-06-28
    • 2013-06-06
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    相关资源
    最近更新 更多