<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[沧海一粟]]></title> 
<link>http://www.dzhope.com/index.php</link> 
<description><![CDATA[Web系统架构与服务器运维,php开发]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[沧海一粟]]></copyright>
<item>
<link>http://www.dzhope.com/post//</link>
<title><![CDATA[PHP+Crontab执行定时任务]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[服务器技术]]></category>
<pubDate>Wed, 14 Mar 2018 02:40:34 +0000</pubDate> 
<guid>http://www.dzhope.com/post//</guid> 
<description>
<![CDATA[ 
	我们做web项目开发的，经常会需要定时备份数据，定时执行重启某个服务或者定时执行某个PHP程序等等，一般在Linux下使用Crontab，在Windows下使用计划任务。本文主要介绍Linux下使用Crontab基础知识以及执行PHP任务。<br/><br/>Crontab是一个Unix/Linux系统下的常用的定时执行工具，可以在无需人工干预的情况下运行指定作业。<br/><br/>安装Crontab<br/>yum install vixie-cron crontabs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//安装Crontab <br/> <br/>chkconfig crond on&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//设为开机自启动 <br/>service crond start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //启动<br/>说明：vixie-cron软件包是cron的主程序；crontabs软件包是用来安装、卸装、 或列举用来驱动 cron 守护进程的表格的程序。<br/><br/>使用Crontab<br/>cron是一个常驻服务，它提供计时器的功能，让用户在特定的时间得以执行预设的指令或程序。只要用户会编辑计时器的配置文件，就可以使用计时器的功能。<br/><br/>查看crontab定时执行任务列表<br/><br/>crontab -l<br/>添加crontab定时执行任务<br/><br/>crontab -e<br/>Crontab任务命令格式<br/>格式：&nbsp;&nbsp;minute&nbsp;&nbsp;hour&nbsp;&nbsp;dayofmonth&nbsp;&nbsp;month&nbsp;&nbsp;dayofweek&nbsp;&nbsp;command<br/>解释：&nbsp;&nbsp;分钟&nbsp;&nbsp;小时&nbsp;&nbsp;日期&nbsp;&nbsp;月付&nbsp;&nbsp;周&nbsp;&nbsp;命令<br/>范围：&nbsp;&nbsp;0-59&nbsp;&nbsp;0-23&nbsp;&nbsp;1-31&nbsp;&nbsp;1-12&nbsp;&nbsp;0-7，0和7都代表周日&nbsp;&nbsp;<br/>在crontab中我们会经常用到* ,&nbsp;&nbsp; -&nbsp;&nbsp;/n 这4个符号，他们都有着特定的意义。<br/><br/>符号&nbsp;&nbsp;说明<br/>*(星号)&nbsp;&nbsp;代表所有有效的值。 如：0 23 * * * backup 不论几月几日周几的23点整都执行backup命令。<br/>,(逗号)&nbsp;&nbsp;代表分割开多个值。如：30 9 1,16,20 * * command 每月的1、16、20号9点30分执行command命令。<br/>-(减号)&nbsp;&nbsp;代表一段时间范围。如0 9-17 * * * checkmail 每天9点到17点的整点执行checkmail命令<br/>/n&nbsp;&nbsp;代表每隔n长时间。如*/5 * * * * check 每隔5分钟执行一次check命令，与0-59/5一样。<br/>举几个栗子：<br/><br/>每天凌晨3:00执行备份程序：0 3 * * * /root/backup.sh<br/><br/>每周日8点30分执行日志清理程序：30 8 * * 7 /root/clear.sh<br/><br/>每周1周5 0点整执行test程序：0 0 * * 1,5 test<br/><br/>每年的5月12日14点执行wenchuan程序：0 14 12 5 * /root/wenchuan<br/><br/>每晚18点到23点每15分钟重启一次php-fpm：*/15 18-23 * * * /etc/init.d/php-fpm<br/><br/>执行PHP定时任务<br/>例1：每天凌晨1点钟执行业务数据统计任务。<br/><div class="code"><br/>5 * * * * /usr/local/bin/php -f /home/web/stat.php &gt;&gt; /dev/null 2&gt;&amp;1<br/></div><br/>例2：每小时的第5分钟获取微信access_token。<br/><div class="code"><br/>5 * * * * /usr/local/bin/php -f /home/web/access.php &gt;&gt; /dev/null 2&gt;&amp;1<br/></div><br/>/usr/local/bin/php是你PHP可执行程序的安装路径。<br/><br/>Crontab定时任务的最小粒度是分钟，那如果我们要执行秒级的定时任务怎么办呢？比如每隔10秒钟执行一次任务呢？一个办法是可用通过bash脚本sleep来实现秒级定时，另一个办法是使用Swoole扩展来实现秒级任务，接下来我们会发文专门讲解基于swoole扩展的支持秒级处理的定时器程序。
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post//#blogcomment</link>
<title><![CDATA[[评论] PHP+Crontab执行定时任务]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.dzhope.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>