背景

  • 项目运行过程中,有些任务需要定时去跑,比如定时获取当前关注公众号的用户,给与奖品发放的需求
    一种解决方式:直接使用 Linux 的 [crontab] 计划任务,设定执行链接就好
    另一种方式:为了方便对自定义指令的统一管理,可以编写 shell 执行脚本

【ThinkPHP6 自定义指令】

▶ 使用技巧

  • 指令:
php think [command_name]
# 提示:个人习惯,对统一模块下的指令,设定一个参数以作区分,这样就减少了自定义类文件的创建
  • crontab -e 计划任务:
### shell监控
* * * * 6 /svr/join.weiq.com/project/zcweiq/app/shell/check_cron.sh /usr/bin/php73 /svr/join.weiq.com/project/zcweiq/runtime/cron >> /svr/join.weiq.com/project/zcweiq/runtime/log/checkcron.log 2>&1 &
  • shell 脚本执行命令参考:
#!/bin/bash
#cronTab 的启动
appPath=$(cd "$(dirname "$0")";cd "../../";pwd);
phpPath=$1 # php 命令
logPath=${appPath}/runtime/cron # 日志保存目录if [[ ! -d ${logPath} ]]; thenmkdir -p ${logPath}
fidateSuffix=`date +%Y%m%d` # 日志日期后缀curr_date=`date "+%Y-%m-%d %H:%M:%S"`
month=`date +%-m`
day=`date +%-d`
hour=`date +%-H`
minute=`date +%-M`
second=`date +%-S``# 任务成本计算, 每月10号 凌晨3点执行
if [[ "$day" -eq "10" && "$hour" -eq "3" && "$minute" -eq "0" ]]; thenpid=`ps -ef | grep "think task_clock one_month_cost" | grep -v grep | awk '{print $2}'`if [[ ! -n "$pid" ]]; then${phpPath} ${appPath}/think task_clock one_month_cost >> ${logPath}/task_one_month_cost.log.${dateSuffix} 2>&1 &fi
fi# 发送消息队列(常驻队列)
pid=`ps -ef | grep "think message_send" | grep -v grep | awk '{print $2}'`
if [[ ! -n "$pid" ]]; then${phpPath} ${appPath}/think message_send >> ${logPath}/message_send.log.${dateSuffix} 2>&1 &
fi# 设定每20分钟执行,招募活动 开始时间后的入队
if [[ `expr $minute % 20` -eq "0" ]]; thenpid=`ps -ef | grep "think message_send new_task_query" | grep -v grep | awk '{print $2}'`if [[ ! -n "$pid" ]]; then${phpPath} ${appPath}/think message_send new_task_query >> ${logPath}/new_task_query.log.${dateSuffix} 2>&1 &fi
fi

▶ 附录:

shell 脚本操作知识点

  • 创建脚本命令:
touch check_cron.sh
  • 然后,需要对脚本赋予权限:
chmod -R 755 check_cron.sh
  • 新建的文件,如果要其生效,需要执行如下命令:
./check_cron.sh

☞ 如果脚本中的部分指令不执行

此时出现的情况就是,没有生成对应日期的 log 日志

  • 此时,先查询下是否存在对应的进程(参考ps -ef | grep message_send
    存在就先 kill 掉,然后重新启用脚本

☞ 参考:

【Linux – Date formatting】
【编写shell 脚本所需的语法和示例】

ThinkPHP6 自定义指令(定时任务脚本 )使用技巧相关推荐

  1. 关于Angularjs中自定义指令一些有价值的细节和技巧

    作者:心叶 时间:2018-04-22 10:58 一:自定义指令常用模板 下面是大致的说明,不是全面的,后面来具体说明一些没有提及的细节和重要的相关知识: angular.module('yello ...

  2. 【前端技巧】JS自定义指令 —— 无限滚动(改写el-table-infinite-scroll)

    @Author:Outman @Date:2023-03-08 JS自定义指令 -- 无限滚动(改写el-table-infinite-scroll) 自定义指令实现 // directives/in ...

  3. 【django】使用django-crontab执行django自定义指令

    django-crontab 部署 需求:再指定的时间内输入django的自定义指令,来进行一些需求的操作. 使用流程: 1.安装: pip install django-crontab 2.配置 s ...

  4. vue点击改变data值_vue 中自定义指令改变data中的值

    通过局部自定义指令实现了一个拖动的指令 html: script: methods:{ set(x,y){ this.data.x=x; this.data.y=y; } }, directives: ...

  5. vue自定义指令封装节流_Vue自定义指令封装节流函数的方法示例

    节流函数是web前端开发中经常用到的一个开发技巧,在input实时搜索,滚动事件等,为了避免过多消耗性能,我们都会使用节流函数.在<JavaScript高级程序设计>一书中有这样的一个例子 ...

  6. builtins自定义_ng-repeat里创建的自定义指令

    在ng里,所有的指令在按照意愿正常工作之前的都需要编译一下,包含angularJS的自定义指令. ng模板里的所有指令都会在angularJS加载完毕之后编译一下,所以那些自定义指令和事件才能工作. ...

  7. 【15】Vue:02-Vue表单基本操作、表单修饰符、自定义指令、计算属性computed、侦听器watch、过滤器、生命周期、数组变异方法、替换数组、动态数组响应数据、图书列表案例、TODOS案例

    文章目录 day02 Vue常用特性 表单基本操作 表单修饰符 自定义指令 Vue.directive 注册全局指令 Vue.directive 注册全局指令 带参数 自定义指令局部指令 计算属性 c ...

  8. vue之vue的生命周期、swiper、自定义组件的封装、自定义指令、过滤器、单文件组件及vue-cli

    文章目录 1.vue的生命周期 1.1.8个生命周期函数 2.swiper 3.自定义组件的封装 4.自定义指令 4.1.定义 4.2.基本使用 4.3.利用自定义指令传入指定参数修改背景色 5.过滤 ...

  9. freemarker自定义指令及方法

    "一节复一节,千枝攒万叶"竹子每生长一段就会总结一下打个节,今天我也总结一下最近处理的一个小问题,希望我的小节,对各位看官有所帮助. 背景描述: 最近项目做了一个月报功能,由于生产 ...

最新文章

  1. 七牛云上传文件之表单上传文件
  2. C++数组与指针回顾总结
  3. 让input变成不可编辑状态的方法
  4. 测试驱动陷阱,第2部分
  5. mysql当时读_Mysql事务以及四中隔离级别实例2以及InnoDB如何解决当时读的幻读问题...
  6. Python图像处理丨OpenCV+Numpy库读取与修改像素
  7. column分栏布局只是文字布局吗_CSS3 column 分栏
  8. [转]利用处理程序错误攻击(下)
  9. 丹佛机场行李系统处理方案
  10. opencv-python 图像基础处理(三)
  11. 1.GraphPad Prism 8软件安装
  12. iOS7新特性的兼容性处理方法
  13. 《士兵突击》,不抛弃,不放弃
  14. Mac下安装Hadoop
  15. 文旅农康展新貌,雷山乡村更振兴
  16. NodeMCU入门,烧程序点灯。
  17. 上海人代会:代表聚焦自贸区新片区建设
  18. (一)shell中常用的基础命令
  19. STM32野火教程学习笔记
  20. Java实现操作系统中四种动态内存分配算法:BF+NF+WF+FF

热门文章

  1. WordXML格式初步分析
  2. 查看电脑已经安装了的数据库
  3. 《洋葱阅读法》笔记-持续更新
  4. python表格单元格批注批量插图xlwings\os\pillow教程,手把手代码讲解
  5. ThunderBird雷鸟 只能收件无法寄件解决
  6. 计算机原理汇编程序实验报告的总结,计算机组成原理及汇编实验报告
  7. 干货收藏|百万UP主都在用的创作小帮手
  8. 《经济学原理》读书笔记
  9. selenium抓取页面可用元素css
  10. Addressables+CCD云端分发服务