使时间调度程序使用if语句

时间:2017-09-10 01:51:50

标签: php

大家好,

我想用php创建类似时间调度程序的东西并在其中插入if语句

示例:

<?php
$hours = "Time Code here";
if($hours = 24H ) {
//my code
} else {
//code
}
?>

我想要的是让这个代码每24小时发生一次

我如何使这段代码有效?

1 个答案:

答案 0 :(得分:0)

我不完全确定这是你的意思,但如果你试图制作一个只在当前时间为00:xx:xx时执行的脚本,你可以很容易检查一下:

if (date('G') == 0) {
    // it is 00:00:00
} else {
    // it is 01:00:00 or later
}

但是,如果您想要的是一个脚本,不知何故,在午夜时自动变为活动状态,您可以将其置于无限while循环中:

set_time_limit(0);

$did_run = false;
while (true) {
    if (date('G') == 0) {
        // it is 00:00:xx (may not be exactly 00 seconds)
        if (!$did_run) {
            // the script hasn't run yet
            $did_run = true; // to make sure it doesn't run a second time

            // do stuff

        } else {
            // it is 00:00:xx but the script has already run
            sleep(30); // wait 30 seconds before checking again
        }
    } else {
        // it is 01:00:00 or later
        $did_run = false; // so it will run again the next day
        sleep(30); // wait 30 seconds before checking again
    }
}

请注意,一旦启动此脚本,它将永远不会结束,除非您手动终止它(或它崩溃)。这就是为什么这不是一个好的解决方案,更好的选择是使用cron作业(在Linux / Unix服务器上)或计划任务(在Windows服务器上)。

像往常一样创建脚本文件。不要在脚本本身进行任何日期/时间检查,因为你要让操作系统处理它。

然后对于Linux,通过SSH登录您的服务器并运行crontab -e,然后添加以下行:

0 0 * * * /usr/bin/php /path/to/my_script.php

这将告诉服务器每天大约00:00:00自动运行my_script.php。有关设置cron作业的详细信息,the Ubuntu Community page包含一些有用的信息。

如果您的托管服务提供商使用DirectAdmin或CPanel等控制面板,控制面板可能会为您提供此选项,而您无需通过SSH登录。

对于Windows服务器,您可以通过远程桌面登录服务器,并通过任务计划程序配置计划任务。我不是那么有经验的,所以我会指出你the TechNet page记录如何做到这一点。该任务需要以脚本的完整路径作为参数调用php.exe

如果您不想自己设置这个问题,那么有一些在线解决方案可以经常通过公共URL调用您的脚本。一个例子是cron-job.org