linux使用crontab实现PHP执行计划定时任务


Posted in PHP onMay 10, 2014

首先说说cron,它是一个linux下的定时执行工具。根用户以外的用户可以使用 crontab 工具来配置 cron 任务。所有用户定义的 crontab 都被保存在/var/spool/cron 目录中,并使用创建它们的用户身份来执行。要以某用户身份创建一个 crontab 项目,登录为该用户,然后键入 crontab -e 命令来编辑该用户的 crontab。该文件使用的格式和 /etc/crontab 相同。当对 crontab 所做的改变被保存后,该 crontab 文件就会根据该用户名被保存,并写入文件 /var/spool/cron/username 中。cron 守护进程每分钟都检查 /etc/crontab 文件、etc/cron.d/ 目录、以及 /var/spool/cron 目录中的改变。如果发现了改变,它们就会被载入内存。这样,当某个 crontab 文件改变后就不必重新启动守护进程了。

安装crontab:

yum install crontabs

说明:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置

查看crontab服务状态:service crond status

手动启动crontab服务:service crond start

查看crontab服务是否已设置为开机启动,执行命令:ntsysv

加入开机自动启动:
chkconfig ?level 35 crond on

crontab命令:

功能说明:设置计时器。

法:crontab [-u <用户名称>][配置文件] 或 crontab [-u <用户名称>][-elr]

补充说明:cron是一个常驻服务,它提供计时器的功能,让用户在特定的时间得以执行预设的指令或程序。只要用户会编辑计时器的配置文件,就可以使 用计时器的功能。其配置文件格式如下:
Minute Hour Day Month DayOFWeek Command

数:
-e  编辑该用户的计时器设置。
-l  列出该用户的计时器设置。
-r  删除该用户的计时器设置。
-u<用户名称>  指定要设定计时器的用户名称。

crontab 格式:

基本格式 :

分钟   小时   日   月   星期   命令

*        *      *    *     *       *

第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列 表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

记住几个特殊符号的含义:
“*”代表取值范围内的数字,
“/”代表”每”,
“-”代表从某个数字到某个数字,
“,”分开几个离散的数字

# Use the hash sign to prefix a comment
# +—————- minute (0 ? 59)
# | +————- hour (0 ? 23)
# | | +———- day of month (1 ? 31)
# | | | +——- month (1 ? 12)
# | | | | +—- day of week (0 ? 7) (Sunday=0 or 7)
# | | | | |
# * * * * * command to be executed

crontab几个例子如下:

(1)第一个例子。

30 21 * * * /etc/init.d/nginx restart
每晚的21:30重启 nginx。

(2)第二个例子,也就是本教程测试的例子

* * * * * /usr/bin/php -f /root/test.php >> test.log

每一分钟执行/root/test.php文件,将结果输出到test.log中。

完成了上面基础工作后,就来看看怎么使用crontab定时执行PHP脚本:

(1)我在/root下新建test.php文件,内容如下:

<?php
        #!/usr/bin/php -q
        echo  date('Y-m-d H:i:s')."from http://www.phpddt.com \n";
?>

说明:你可以用whereis php查找php执行文件位置。

(2)然后crontab -e编写如下shell:

* * * * * /usr/bin/php -f /root/test.php >> test.log

说明:test.php必须为可执行文件:chmod +x test.php

测试结果很正常,截图如下:

linux使用crontab实现PHP执行计划定时任务

当然你可以用使用crontab -e继续添加任务,在/var/spool/cron下你可以看到一个root文件。
windows下直接用windows计划任务,通过bat打开网页就可以了。不像linux这么复制。

PHP 相关文章推荐
php microtime获取浮点的时间戳
Feb 21 PHP
php删除文件夹及其文件夹下所有文件的函数代码
Jan 23 PHP
curl实现站外采集的方法和技巧
Jan 31 PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
Mar 18 PHP
php计算一个文件大小的方法
Mar 30 PHP
用PHP生成excel文件到指定目录
Jun 22 PHP
PHP+Mysql基于事务处理实现转账功能的方法
Jul 08 PHP
通过修改配置真正解决php文件上传大小限制问题(nginx+php)
Sep 23 PHP
培养自己的php编码规范
Sep 28 PHP
PHP多进程之pcntl_fork的实例详解
Oct 15 PHP
PHP实现模拟http请求的方法分析
Dec 20 PHP
深入学习微信网址链接解封的防封原理visit_type
Aug 15 PHP
PHP FTP操作类代码( 上传、拷贝、移动、删除文件/创建目录)
May 10 #PHP
php判断电脑访问、手机访问的例子
May 10 #PHP
php计算程序运行时间的简单例子分享
May 10 #PHP
PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
May 10 #PHP
php递归删除目录下的文件但保留的实例分享
May 10 #PHP
PHP实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)
May 10 #PHP
php使用mkdir创建多级目录入门例子
May 10 #PHP
You might like
从MySQL数据库表中取出随机数据的代码
2007/09/05 PHP
PHP错误和异常处理功能模块示例
2016/11/12 PHP
jQuery之浮动窗口实现代码(两种方法)
2010/09/08 Javascript
Jquery读取URL参数小例子
2013/08/30 Javascript
php读取sqlite数据库入门实例代码
2014/06/25 Javascript
node.js中的console.timeEnd方法使用说明
2014/12/09 Javascript
Jquery 分页插件之Jquery Pagination
2015/08/25 Javascript
jQuery实现可以控制图片旋转角度效果(附demo源码下载)
2016/01/27 Javascript
Bootstrap Paginator分页插件使用方法详解
2016/05/30 Javascript
Bootstrap开关(switch)控件学习笔记分享
2016/05/30 Javascript
Angular 中 select指令用法详解
2016/09/29 Javascript
[原创]javascript typeof id==='string'?document.getElementById(id):id解释
2016/11/02 Javascript
AngularJs表单校验功能实例代码
2017/02/09 Javascript
jQuery表格(Table)基本操作实例分析
2017/03/10 Javascript
jQuery复合事件用法示例
2017/06/10 jQuery
VUE-Table上绑定Input通过render实现双向绑定数据的示例
2018/08/27 Javascript
在vue项目中,将juery设置为全局变量的方法
2018/09/25 Javascript
Vue插槽原理与用法详解
2019/03/05 Javascript
JavaScript运动原理基础知识详解
2020/04/02 Javascript
vue-cli3中配置alias和打包加hash值操作
2020/09/04 Javascript
基于JavaScript实现随机点名器
2021/02/25 Javascript
Python之读取TXT文件的方法小结
2018/04/27 Python
使用python获取邮箱邮件的设置方法
2019/09/20 Python
Tensorflow 卷积的梯度反向传播过程
2020/02/10 Python
django项目中新增app的2种实现方法
2020/04/01 Python
Python Dict找出value大于某值或key大于某值的所有项方式
2020/06/05 Python
在pycharm创建scrapy项目的实现步骤
2020/12/01 Python
Larsson & Jennings官网:现代瑞士钟表匠
2018/03/20 全球购物
致铅球运动员加油稿
2014/02/13 职场文书
生产工厂门卫岗位职责
2014/09/26 职场文书
关于有小孩的离婚协议书
2014/10/26 职场文书
2014年工程部工作总结
2014/11/25 职场文书
《去年的树》教学反思
2016/02/18 职场文书
Python如何利用正则表达式爬取网页信息及图片
2021/04/17 Python
Python中for后接else的语法使用
2021/05/18 Python
Mysql 如何合理地统计一个数据库里的所有表的数据量
2022/04/18 MySQL