PHP由于是顺序执行的脚本语言,多线程编程困难,因此PHP的定时任务相比较JAVA 困难的多,使用Sleep会导致性能极差和系统资源损失,下面我介绍一种高性能,又简单的方式来解决这个问题。

步骤

  1. 编写restful接口,可以用TP这样的框架,或者直接写PHP文件,完成任务逻辑。例如:
//使用TP框架建立restful接口
class OauthController extends Controller
{/*完成上课提醒*/public function classReminder(){//查看今天所有课程$courses = D("course")->where(array("cday" => date("Y-m-d")))->select();foreach ($courses as $course) {$cstime = strtotime($course['cstime']);$currtime = time();$cc = $cstime - $currtime;if ($cc < 60 * 60 && $cc > 5 * 60) {$ucc = D("user_card_course")->where(array("courseid" => $course["id"]))->select();foreach ($ucc as $uc) {$re = D("wxmsg")->where(array("userid" => $uc["userid"], "courseid" => $course["id"], "type" => "上课提醒"))->find();if ($re) {echo "发送过了";continue;}$user = D("oauth_user")->find($uc["userid"]);$this->sendTemMsgForClassReminder($user["openid"], $course["id"], $uc["userid"]);}}}}}
复制代码
  1. linux添加定时任务,crontab -e 编辑任务
#每晚2点备份mysql
0 2 * * *  /opt/mysqlBack/bkMysql.sh
#每15分钟(每小时的 0 15 30 45 分启动),访问接口,并将日志输出到log
*/15 * * * * wget http://localhost/classreminder >/opt/server/gmfitness-schedule/classreminder.log 2>&1
复制代码
  1. wq!保存。

成功!


换一个访问我的blog: yondu.vip

PHP+crontab 完美实现定时任务相关推荐

  1. Mac下使用crontab来实现定时任务

    Mac下使用crontab来实现定时任务 说明: 1.Linux和Mac下操作crontab都是一致的 2.配置文件都在/etc/crontab下,如果没有就创建. 3.测试发现直接使用crontab ...

  2. Linux Crontab 设置的定时任务没有启动的排查

    1.先手动执行定时任务以此来判断脚本是否有问题. 2.确认服务器是否开启定时任务计划服务 命令:service crond statusservice crond start 1 2 3.检查定时任务 ...

  3. linux远程设置crontab,Linux 设置定时任务crontab命令

    1.crontab命令概念 crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于"crontab"文件中,以供之后读取和执行. cron 系统调 ...

  4. python 定时任务好 还是crontab_使用python crontab设置linux定时任务

    熟悉linux的朋友应该知道在linux中可以使用crontab设置定时任务.可以通过命令crontab -e编写任务.当然也可以直接写配置文件设置任务. 但是有时候希望通过脚本自动设置,比如我们应用 ...

  5. Go 学习笔记(77)— Go 第三方库之 cronexpr(解析 crontab 表达式,定时任务)

    cronexpr 支持的比 Linux 自身的 crontab 更详细,可以精确到秒级别. ​ 1. 实现方式 cronexpr 表达式从前到后的顺序如下所示: 字段类型 是否为必须字段 允许的值 允 ...

  6. crontab脚本,定时任务相关细节

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/tomnic_ylwang/article/details/47315899 默认情况下cron是没有 ...

  7. crontab 每周五_crontab定时任务 每隔一周的周五执行

    定时任务每隔一周的周五执行 * * * * 05 /bin/bash -c '(($(date +\%s) / 86400 \% 14))' && your-script 测试是否成功 ...

  8. crontab fastadmin thinkphp 定时任务权限不足

    项目场景: 项目正常运行,测试突然反馈说出现异常,程序闪退,界面闪退 问题描述: 查看日志报错 Permission denied 权限不足 问题原因,定时是用root执行,项目运行是www用户执行 ...

  9. Linux下使用crontab来执行定时任务计划----执行每晚12点多执行移动log日志文件操作

    一.mvlogs.sh文件: mv `find  /usr/local/logs -name 'Interface.log2010*.log' -mtime +4 |xargs -r`  /usr/l ...

  10. linux crontab 执行php定时任务的巨坑和如何查看定时任务执行结果

    首先crontab是有执行日志的,但是里面的日志报错都是一些状态码根本看不懂,谷歌一番后发现如果想查看定时任务执行结果可以这样写 */120 * * * * php /usr/share/nginx/ ...

最新文章

  1. 如何合并多个Django项目?
  2. 技术面试时该反问面试官什么问题?小伙整理了灵魂50问,GitHub日入2500星
  3. 机器学习(MACHINE LEARNING)MATLAB之surf()函数
  4. MainWindow 简介
  5. Eclipse + Pydev开发Python时import报错解决方法
  6. drools 执行函数_Drools可执行模型还活着
  7. 半夜,滴滴司机问我会LRU吗?
  8. 【转】jsp+servlet和SSM分别是如何实现文件上传(示例)
  9. Python机器学习:梯度下降法004实现线性回归中的梯度下降法
  10. java基础面试题之:super与this的区别
  11. Java中使用foreach带来的一些问题
  12. 【报告分享】2020直播电商行业研究报告.pdf(附下载链接)
  13. 成年人的世界,嘴上喊的都是主义,心里装的都是生意
  14. c语言简单系统实例,简单的c语言编程实例
  15. 7 Python文件和数据格式化
  16. 广义线性模型matlab,使用广义线性模型拟合数据
  17. MIPS汇编语言实现Fibonacci数列(斐波那契数列)
  18. Mysql,姓名按笔画排序
  19. 好用的免费代理池搭建
  20. String.prototype.padStart()

热门文章

  1. plugin工程及与flutter工程通信原理
  2. 爬了7000+条内衣信息,只为探究妹纸们的偏好!
  3. 面试今日头条Android开发,结束时我问了面试官是否有女朋友,结果你猜?
  4. 手把手图文教你从Eclipse项目迁移Android Studio
  5. oracle case grouping,ORACLE GROUPING函数的使用
  6. idea如何远端调试
  7. html能在hade中注释吗,A第1章 HTML超文本标记语言(1-20)OK.doc
  8. 一、在Linux下,Nginx初安装及简单配置
  9. JS连接数据库(需配置odbc)
  10. curl 安装_实用干货——如何使用curl命令下载文件