用监控宝执行定时任务
之前写过一个PHP脚本,然后用监控宝每小时访问这个脚本(因为监控宝HTTP监控最大间隔时间是1小时),脚本里判断时间,如果当前时间是晚上12点,就跳转到WHMCS的crons/cron.php页面,由于监控宝会有多台服务器同时发出请求,为了避免任务被执行多次,脚本生成一个日志文件作为判断,确保每天只执行一次。
<?php
$url = 'http://www.domain.com/crons/cron.php';
if(date('H', time()) <> '00')
exit;
$log = '';
if(is_file('my-cron.log')) {
$fp = fopen('my-cron.log', 'r');
while(! feof($fp)) {
$log = fgets($fp);
}
fclose($fp);
}
if( $log == date('Y-m-d', time()) )
exit;
$logfile = fopen('my-cron.log', 'w');
$txt = date('Y-m-d', time());
fwrite($logfile, $txt);
fclose($logfile);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
?>
但现在,不用这么麻烦了,因为监控宝有一个更好的功能:定时监控。
创建监控项目的时候,最下方有个定时监控,点击进去,我们可以看到可以设置监控周期为每天、每周、每月、每年,并可以设置监控触发时间。