Linux下用Crontab来实现PHP的定时运行<摘录>

1.用PHP编写编写shell

getscore.php

# #!/usr/local/bin/php -q
#     <?
#     $g_dbhost = "localhost";
#     $g_dbname = "1bo8";
#     $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 `1bo8` (
#     `fr_date` date NOT NULL default '0000-00-00',
#     `fr_time` varchar(32) NOT NULL default ''
#     ) ENGINE=innoDB DEFAULT CHARSET=utf8;

2.设定crontab

执行vi/etc/crontab命令

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

#run-parts

*****root/home/bjbs270/public_html/getscore.php#每一分钟执行一次所指定的程序

01****rootrun-parts/etc/cron.hourly

024***rootrun-parts/etc/cron.daily

224**0rootrun-parts/etc/cron.weekly

4241**rootrun-parts/etc/cron.monthly

3.重启crond

/etc/rc.d/init.d/crondstart/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文件的内容是:2919***echoitsdinnertime,则系统每天的19:29显示‘itsdinnertime’。

附:当这六段什么都不设的话就是程序在1秒中执行一次

我在用CRON的时候把“01****命令1”当成了是每一秒中程序执行一次命令一。这个想法误导了我很久,其实这句话的意思是每个小时的第一分钟程序执行一次。

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

/etc/crontab的設定是針對整個系統,只有root才有權限修改

crontab-e的設定是針對個人,用crontab-e建的個人排程會放在/var/spool/cron/下

crontab-e

//編輯排程

crontab-r

//刪除排程

crontab-l

//列出排程

相关推荐