定时任务在实际开发中用到是非常多的,这里也简单说说PHP怎么执行定时任务。我们都知道PHP是一门解释性语言,当我们在浏览器中输入某个URL时,我们才能去执行PHP,但是如果不访问URL呢,怎么让PHP跑起来?这个问题,可能大家都没有仔细思考过,当然我也没有考虑过,,,,

PHP的定时任务其实就是让PHP脚本每隔一段时间运行一次,这就需要结合Linux的crontab了。下面我们需要先了解一下crontab。

Linux crontab命令

Linux crontab是用来定期执行程序的命令。先看一下下面几个命令。

crontab -e  //编辑定时任务

crontab -r //删除定时任务

crontab -l  //列出当前定时任务

除此之外你还需要知道的是,定时任务的格式是怎么样的

f1 f2 f3 f4 f5 program

其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。

当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其余类推

当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其余类推

当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其余类推

当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其余类推

通过一个实例来了解定时任务

首先我们在Linux下任一目录新建index.php文件<?php

$path = dirname(__FILE__) . '/data.txt';

if (!file_exists($path)) {

file_put_contents($path, 0);

} else {

$num = file_get_contents($path);

file_put_contents($path, $num + 1);

}

这段代码的意思在data.txt中写一个数字,并且每次执行将数字更新+1。

然后我们使用crontab -e命令来创建定时任务,内容为下*/1 * * * * php /www/wwwroot/crontab/index.php

这样其实定时任务就建好了,这句代码的意思是没过一分钟执行一次这个目录下的index.php文件一次。

代码写好了,我们需要看定时任务是不是成功执行了。tail -f /var/log/cron

使用该命令才看定时任务日志,下面就说明定时任务已经成功执行了。

接下来我们可以看一下,index.php同目录下是不是多了一个'data.txt'的文件,如果有说明我们已经成功了,并且文件中的值会每过一分钟+1。

如果,如果并没有出现预期的结果,那么,,,开始排查bug吧,这是每个程序员都会经历的,同样的代码,同样的操作,为啥会出现不一样的结果??!!(抓狂)

冷静一下,开始找bug了,首先你的确保自己的定时任务执行了,自己通过crontab日志确定,然后再想是不是代码的问题,php index.php先手动执行试试,咦,手动执行竟然也没出现预料的结果,开始仔细检查代码,而又想到自己在本地windows下能够完美运行该文件,那么如果有问题,可能出现在Windows和Linux系统的差异上,路径?权限?

想到就试试,将代码里的路径换成绝对路径,并使用“/”连接(windows路径连接符是“\”),最后赋予index.php写和执行的权限chmod 777 index.php

OMG!预期效果达到了。

老规矩,如果你有疑问,欢迎留言。你若问,我必答。

php添加linux定时任务,PHP与Linux定时任务相关推荐

  1. c语言 linux系统 delay,Linux下实现秒级定时任务的两种方案

    Linux下实现秒级定时任务的两种方案(Crontab 每秒运行): 第一种方案,当然是写一个后台运行的脚本一直循环,然后每次循环sleep一段时间. while true ;do command s ...

  2. linux shell脚本 nohup,linux真正使用shell脚本做定时任务 关键的Nohup

    网上有很多的文章教大家使用定时任务,所以别的废话我就不多说了 我这里直接有SH来做定时,只是有一点大家不知道,一定要用Nohup,否则用户退出终端以后,SH任务会被自动终止掉 假设有一 tash.sh ...

  3. linux作业调度软件,Zeit - Linux中定时任务和临时任务的图形化工具

    Zeit是一个开源的GUI工具,通过"crontab"和"at"来调度作业.它是用C++编写的,在GPL-3.0许可下发布.是一种易于使用的工具,提供了一个简单 ...

  4. linux查看定时服务,linux 定时任务 crond 服务介绍

    linux定时任务crond服务应用指南 Linux的定时任务crond(crontab)服务 1.crond是什么? crond是linux系统中用来定期执行命令或者指定程序的程序(软件) 2.秒级 ...

  5. Linux实战教学笔记13:定时任务补充

    第十三节 定时任务补充 标签(空格分隔): Linux实战教学笔记 ---[更多资料点我查看][1] 1,生产环境常用Crontab专业实例 1.1书写crontab定时任务多个基本要领 1.1.1 ...

  6. linux thinkphp 计划任务_ThinkPHP定时任务项目案例分析

    定时任务常见的是Linux中的crontab定时任务,这种是通过编写脚本来执行的,它会在后台一直循环执行.但是有时候我们没有服务器权限或者说我们没有独立的服务器,那又该怎么办?其实,定时任务还有一种就 ...

  7. linux定时备份到邮箱,定时任务备份数据库并发送邮箱

    定时备份数据库文件.并发送到邮箱中. 使用 crontab   定时任务,执行sh脚本备份现有的数据库, 并通过mutt 这个软件发送到邮箱中. 上面是使用原理.  来看看操作步骤: 第一.建立sh脚 ...

  8. linux系统内核参数命令,Linux内核启动参数解析及添加

    1.环境: Linux linuxidc 4.4.0-89-generic #112-Ubuntu SMP Mon Jul 31 19:38:41 UTC 2017 x86_64 x86_64 x86 ...

  9. linux删除相同用户,Linux 批量添加和删除用户

    Linux批量添加和删除用户 一,工具作用Linux批量添加和删除用户 在Linux用户管理中,经常需要用到批量添加或删除用户:如果用 useradd或adduser来添加大量用户,对系统管理员的体力 ...

最新文章

  1. 郁闷的时候看看这头驴,改变你的心态!
  2. 机器学习:正则化原理总结
  3. php phpanalysis2.0,使用phpAnalysis打造PHP应用非侵入式性能分析器
  4. HDU——1054 Strategic Game
  5. [小技巧][JAVA][转换]字符数组char[]与字符串String之间互相转换
  6. git实现审核功能_一文教你如何搭建PDD分佣小程序实现财富自由
  7. 京东回应“两年将回购20亿美元股份”;微软即刻关闭全球所有旗下商店;. Net 5首个预览版发布|极客头条...
  8. Android 单元测试cmd 命令集
  9. 图解大数据技术:从入门到精通系列教程
  10. Protected Process Light(PPL)微软系统进程保护机制
  11. 【毕业设计】基于单片机的便携式空气质量检测仪 - 物联网 嵌入式
  12. 【NAS备份】摆脱丢数据的噩梦,群晖备份硬核实战教程分享
  13. 我要写整个中文互联网界最牛逼的JVM系列教程 | 「JVM与Java体系架构」章节:JVM的发展历程
  14. 发票核验API 分享推荐
  15. [励志]知乎热门:做事情三分钟热度怎么破?
  16. CSS 重要属性与定位
  17. 51个Python鲜为人知的秘密特性,老司机看完都惊叹不已
  18. 弘辽科技:淘宝销量数据从哪查?销量怎么提升?
  19. 美团点评Robust(泛型与热更新方案)
  20. 50多个有用的Docker工具集

热门文章

  1. java checked异常有那些,java checked exceptions
  2. druid 多数据源_Druid连接池的使用以及注意事项
  3. 异常信息配置文件已被另一个程序更改_抢先目睹:SpringBoot2.4配置文件加载机制大变化
  4. python接收邮件g_Python接收Gmail新邮件并发送到gtalk的方法
  5. c语言乘法口诀倒三角,乘法口诀表,C语言实现
  6. mysql延迟注入br_(原创)安全狗SQL注入绕过思路[sql注入waf绕过][sql注入bypass]
  7. mysql gno( )_MySql笔记(一)
  8. mysql 双冒号_jdk8新特性之双冒号 :: 用法及详解
  9. one-hot与哑变量(dummy variable)的区别
  10. java dispatchevent_dispatchEvent(AWTEvent) 分派事件