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+mysql写的留言本
Oct 09 PHP
php mysql数据库操作分页类
Jun 04 PHP
PHP 实现多服务器共享 SESSION 数据
Aug 15 PHP
php下将XML转换为数组
Jan 01 PHP
php获取ip的三个属性区别介绍(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
Sep 23 PHP
php不允许用户提交空表单(php空值判断)
Nov 12 PHP
PHP生成器简单实例
May 13 PHP
crontab无法执行php的解决方法
Jan 25 PHP
PHP面向对象自动加载机制原理与用法分析
Oct 14 PHP
PHP完全二叉树定义与实现方法示例
Oct 09 PHP
PHP __call()方法实现委托示例
May 20 PHP
PHP filter_var() 函数, 验证判断EMAIL,URL等
Mar 09 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
php判断是否为ajax请求的方法
2016/11/29 PHP
php中错误处理操作实例分析
2019/08/23 PHP
提高javascript效率 一次判断,而不要次次判断
2012/03/30 Javascript
Javascript开发之三数组对象实例介绍
2012/11/12 Javascript
浅析LigerUi开发中谨慎载入common.css文件
2013/07/09 Javascript
js jq 单击和双击区分示例介绍
2013/11/05 Javascript
JavaScript的setAttribute兼容性问题解决方法
2013/11/11 Javascript
jquery限定文本框只能输入数字即整数和小数
2013/11/29 Javascript
js登录弹出层特效
2014/03/07 Javascript
JavaScript加入收藏夹功能(兼容IE、firefox、chrome)
2014/05/05 Javascript
Javascript基础教程之数据类型 (布尔型 Boolean)
2015/01/18 Javascript
javascript实现实时输出当前的时间
2015/04/27 Javascript
javascript元素动态创建实现方法
2015/05/13 Javascript
简单几步实现返回顶部效果
2016/12/05 Javascript
详解Python中logging日志模块在多进程环境下的使用
2016/12/26 Javascript
JavaScript事件对象深入详解
2018/12/30 Javascript
Nodejs对postgresql基本操作的封装方法
2019/02/20 NodeJs
浅谈JS中几种轻松处理'this'指向方式
2019/09/16 Javascript
Python基于列表list实现的CRUD操作功能示例
2018/01/05 Python
django admin添加数据自动记录user到表中的实现方法
2018/01/05 Python
Python使用smtp和pop简单收发邮件完整实例
2018/01/09 Python
python脚本监控Tomcat服务器的方法
2018/07/06 Python
使用python读取.text文件特定行的数据方法
2019/01/28 Python
Django 自定义分页器的实现代码
2019/11/24 Python
python 求10个数的平均数实例
2019/12/16 Python
Python转换字典成为对象,可以用&quot;.&quot;方式访问对象属性实例
2020/05/11 Python
关于递归的一道.NET面试题
2013/05/12 面试题
最热门的自我评价
2013/12/30 职场文书
初三物理教学反思
2014/01/21 职场文书
初级会计求职信范文
2014/02/15 职场文书
项目经理聘任书
2014/03/29 职场文书
2014年教师批评与自我批评思想汇报
2014/09/20 职场文书
2014年化验员工作总结
2014/11/18 职场文书
写给老师的感谢信
2015/01/20 职场文书
小学教师求职信范文
2015/03/20 职场文书
MySQL 服务和数据库管理
2021/11/11 MySQL