大家好,
我想用php创建类似时间调度程序的东西并在其中插入if语句
示例:
<?php
$hours = "Time Code here";
if($hours = 24H ) {
//my code
} else {
//code
}
?>
我想要的是让这个代码每24小时发生一次
我如何使这段代码有效?
答案 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。