crontab定时执行PHP

本文详细介绍了如何使用Cron来设置定时任务,包括不同格式的时间设置方式,并提供了多个具体的例子,帮助读者更好地理解Cron任务的配置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例:

* * * * * /usr/bin/curl http://www.a.com/script.php  //通过url访问php脚本,相比下面方法效率低

* * * * * /usr/bin/php -f /var/www/web/script.php //通过本地php环境访问php脚本,如有包含文件注意路径问题

 

关于*****时间的设置:

基本格式 :
* * * * *  command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
crontab文件的一些例子:
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启apache。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启apache。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重启apache。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重启apache。
0 */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小时重启apache
0 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点之间,每隔一小时重启apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4号与每周一到周三的11点重启apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一号的4点重启apache

 

转载于:https://www.cnblogs.com/haohaosky/p/6632383.html

### 解析 crontab 定时任务执行中断的原因 Crontab 定时任务未能正常执行可能由多种因素引起。新创建的任务至少需等待两分钟后才会首次触发[^1]。此外,环境变量差异、路径设置不当以及命令本身的错误都可能导致任务无法成功完成。 #### 环境配置不一致 当从交互式环境中直接运行脚本一切正常,而放置于 crontab 后却出现问题时,通常是因为两者所处的工作环境不同所致。交互模式下默认加载了用户的 shell profile 和其他初始化文件,这些文件定义了一系列环境变量;然而,在非交互式的 cron 进程中并不会自动读取此类配置[^2]。 为了确保一致性,建议显式指定所需的所有环境参数: ```bash SHELL=/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin HOME=/ ``` #### 路径与权限问题 确认所有涉及的文件和目录具有适当访问权限,并且绝对路径被用于调用程序及其依赖资源。特别是对于 PHP 类型的任务来说,还需留意生成的日志文件夹归属权是否正确分配给目标用户(例如 `www`),以防止因权限不足而导致操作失败[^3]。 #### 日志记录分析 利用日志可以帮助诊断具体哪里出了差错。通过检查 `/var/log/cron` 可知某项作业是否有被执行或是遇到了什么异常状况。另外,也可以考虑将标准输出重定向至特定位置以便后续审查[^5]。 ```bash * * * * * /path/to/script.sh >> /home/user/logs/output.log 2>&1 ``` 上述例子展示了如何捕获并保存每次调度的结果信息,其中包含了任何可能出现的标准错误流数据。 #### 特殊字符处理 需要注意的是某些特殊符号在 crontab 表达式中有特别意义,像 `%` 就是用来分隔多行输入的标记符。因此如果要在命令字符串内部使用百分号,则应先对其进行转义以免造成解析上的混乱。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值