>백엔드 개발 >PHP 튜토리얼 >计划任务定时执行

计划任务定时执行

WBOY
WBOY원래의
2016-06-06 20:30:021045검색

linux 上面执行任务计划
需求
有60个文件 例如:文件命名 1.txt, 2.txt, 3.txt ... 60.txt
需要每天执行一个文件

初衷 开始 只有 15个文件 1.txt ... 15.txt
可以用每天时间 date("j", time()); 借助php 简单判断完成
目前用每天的时间 j 来处理是显然不行的

大神帮我看下有什么好的解决方案吗? 在此谢过了

回复内容:

linux 上面执行任务计划
需求
有60个文件 例如:文件命名 1.txt, 2.txt, 3.txt ... 60.txt
需要每天执行一个文件

初衷 开始 只有 15个文件 1.txt ... 15.txt
可以用每天时间 date("j", time()); 借助php 简单判断完成
目前用每天的时间 j 来处理是显然不行的

大神帮我看下有什么好的解决方案吗? 在此谢过了

写一个脚本,通过crontab每天定时执行。

脚本中定义一个配置变量,保存脚本第一天执行的日期first_date。在每天执行时,根据当前日期current_date减第一天日期获取天数差diff_date,然后用天数差模60(文件数)diff_date%60得到执行文件编号,最后执行该编号的文件。

这样就可以循环定时执行一组执行文件了~

每次执行1.txt,之后把剩下的文件改名编号减1,1.txt改成60.txt

用crontab可以实现你要的目的
敲crontab -e命令然后写你要定时的任务
* * * * * + 命令

第1列分钟1~59
第2列小时1~23(0表示子夜)
第3列日1~31
第4列月1~12
第5列星期0~6(0表示星期天)
第6列要运行的命令

下面是crontab的格式:
分 时 日 月 星期 要运行的命令

这里有crontab文件条目的一些例子:

30 21 * * * /usr/local/apache/bin/apachectl restart
上面的例子表示每晚的21:30重启apache。

45 4 1,10,22 * * /usr/local/apache/bin/apachectl restart
上面的例子表示每月1、10、22日的4 : 45重启apache。

10 1 * * 6,0 /usr/local/apache/bin/apachectl restart
上面的例子表示每周六、周日的1 : 10重启apache。

0,30 18-23 * * * /usr/local/apache/bin/apachectl restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。

0 23 * * 6 /usr/local/apache/bin/apachectl restart
上面的例子表示每星期六的11 : 00 pm重启apache。

  • */1 * * * /usr/local/apache/bin/apachectl restart
    每一小时重启apache

  • 23-7/1 * * * /usr/local/apache/bin/apachectl restart
    晚上11点到早上7点之间,每隔一小时重启apache

0 11 4 * mon-wed /usr/local/apache/bin/apachectl restart
每月的4号与每周一到周三的11点重启apache

0 4 1 jan * /usr/local/apache/bin/apachectl restart
一月一号的4点重启apache

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.