用监控宝执行定时任务

之前写过一个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);
?>

但现在,不用这么麻烦了,因为监控宝有一个更好的功能:定时监控。

监控宝界面

创建监控项目的时候,最下方有个定时监控,点击进去,我们可以看到可以设置监控周期为每天、每周、每月、每年,并可以设置监控触发时间。

监控宝定时监控设置

阿里云