设为首页 收藏本站
查看: 901|回复: 0

[经验分享] crontab结合用PHP编写的shell完成自动更新数据的程序

[复制链接]

尚未签到

发表于 2017-4-13 10:10:18 | 显示全部楼层 |阅读模式
  crontab结合用PHP编写的shell完成自动更新数据的程序
  另外可以参看: http://www.cnblogs.com/candle806/archive/2011/12/15/2288491.html
  
作者:心灯
1.用PHP编写编写shell
getscore.php
#!/usr/local/bin/php -q
<?
$g_dbhost = "localhost";
$g_dbname = "16328";
$g_dbuserid = "root";
$g_dbpasswd = "";
function opendb(){
global $g_dbhost, $g_dbuserid, $g_dbpasswd, $g_dbname, $g_errmsg;
$conn = mysql_connect($g_dbhost,$g_dbuserid,$g_dbpasswd);
if(!$conn) die($g_errmsg.mysql_error());
@mysql_select_db($g_dbname, $conn);
if(mysql_errno()) die($g_errmsg.mysql_error());
return $conn;
}
opendb();
$date = date("Y-m-d");
$time = date("H:i:s");
echo $sql = "insert into football_rate set fr_date='$date',fr_time='$time'";
$res = mysql_query($sql) or die(mysql_error());
?>

数据库:
CREATE TABLE `16328` (
`fr_date` date NOT NULL default '0000-00-00',
`fr_time` varchar(32) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

2.设定crontab
执行 vi /etc/crontab 命令

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
#這裡預設是 root ,crond 執行完之後會將結果寄給這個帳號,我們可以自取,不過需要事先建立這個帳號
HOME=/
  # run-parts
* * * * * root /home/bjbs270/public_html/getscore.php # 每一分钟执行一次所指定的程序
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

3.重启crond
/etc/rc.d/init.d/crond start/stop/restart

附:

Crontab是UNIX系统下的定时任务触发器,其使用者的权限记载在下列两个文件中:
/usr/var/adm/cron/cron.deny:该文件中所列的用户不允许使用Crontab命令;
/usr/var/adm/cron/cron.allow:该文件中所列的用户允许使用Crontab命令;
Crontab命令的格式为:crontab –l|-v|-r|-e [username],其参数含义如表一:

参数名称

含义

-l

显示用户的Crontab文件的内容
-v

显示用户的Crontab文件的内容及其提交的时间,只适用于Compaq系列
-r

从Crontab目录中删除用户的Crontab文件
-e

编辑用户的Crontab文件


用户所建立的Crontab文件存于/var/spool/cron/crontabs中,其文件名与用户名一致。
它的格式共分为六段,前五段为时间设定段,第六段为所要执行的命令段,
格式如下:* * * * * <command>

其时间段的含义如表二:

含义

取值范围

第一段

代表分钟
0—59

第二段

代表小时
0—23

第三段

代表日期
1—31

第四段

代表月份
1—12

第五段

代表星期几,0代表星期日
0—6

  例:如果用户的Crontab文件的内容是:29 19 * * * echo its dinner time,则系统每天的19:29显示‘its dinner time’。
附:当这六段什么都不设的话就是程序在1秒中执行一次
我在用CRON的时候把“01 ** * * 命令1”当成了是每一秒中程序执行一次命令一。这个想法误导了我很久,其实这句话的意思是每个小时的第一分钟程序执行一次。

修改 /etc/crontab 和 crontab -e 指令有何不同?


  • /etc/crontab 的設定是針對整個系統,只有 root 才有權限修改
  • crontab -e 的設定是針對個人, 用 crontab -e 建的個人排程會放在 /var/spool/cron/ 下

    • crontab -e
      //編輯排程
    • crontab -r
      // 刪除排程
    • crontab -l
      // 列出排程


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-364292-1-1.html 上篇帖子: PHP长文章分页函数,带使用方法,不会分割段落,翻页在底部 下篇帖子: php获取客户端浏览器以及操作系统信息的方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表