在linux下面我们对于定时执行shell文件并不陌生,我们在这里执行的都是shell文件,我们可以不可以直接执行其他程序文件,例如php文件,答案肯定是可以的,我们可以命令行下面执行php文件,例如,我们有这样一个需求,一个同学想购买buyvm.net的主机,但是呢这个buyvm像国内的小米一样,搞饥饿营销,这样就搞得大家很头痛了,一方面很想得到一款主机,另一方面又不想每天盯着看,尤其是这是一家加拿大的公司,数据中心位于美国,很多时候上货都是中国的半夜,如此一来就折腾死我们了,我们可以写一个php程序,然后来定时执行,如果我们想要的货到了,自动发邮件给我们,那其实我们也可以写shell或者python或Java,但是此处我们仅以php为例:[php]
<?php
$c = file_get_contents("http://doesbuyvmhavestock.com/automation.json");
$c = json_decode($c, true);
if ($c[21][‘qty’] > 0) {
exitsh();
mail(‘phpd.cn@gmail.com’, ‘buyvm kvm 256m’, $c[21][‘name’] . ‘ : ‘ . $c[21][‘qty’] . "\r\nhttp://buyvm.net");
}
function exitSh() {
$file = file("/home/sh/buyvm.php");
$file[0].="\nexit;";
file_put_contents("/home/sh/buyvm.php", $file);
}[/php]
这代码其实就是远程访问buyvm提供的一个json文件,这个文件中会有其各款产品的更新信息,如果我们需要的产品有货了,便发邮件给自己,这样就会方便许多,不用一直盯着。
然后我们开始定时执行:
crontab -e
实际上,可以直接编辑当前用户的自动执行文件,比如对于root用户,可以编辑
vim /var/spool/cron/crontabs/root
对于crontab的使用小总结,我们这里有一篇文章crontab的使用
我们开始编辑crontab文件进行定时执行
#!/usr/bin/php
*/30 * * * * php -f /usr/local/bin/test.php
这样每隔30分钟检测一次。
如果要删除用户的crontab自动定时文件可以执行
crontab -r
查看当前用户下所有的自动执行任务
crontab -l
先给出一个好工具crontab generator
https://crontab.guru/