一、定时发送任务解析

  在进行手机APP或者微信开发的时候,经常会有需要定时推送消息的场景。

  定时发送又分为两种:

    一种是在开发的时候固定时间,后台管理人员只能选择将要推送的消息;

    另一种是后台管理人员可以自由选择推送的时间和消息;

二、解决方案

  PHP本身是不支持定时发送的,因为PHP是一个脚本语言。在大多数情况下,浏览器关闭,PHP也就不执行了。大部分情况下都依赖于外部的一些小东西。

  1、固定时间

    大多数服务器系统都是windows或linux。

      linux:使用CronTab定时执行php

          首先,进入命令行模式。作为服务器的linux一般都默认进入命令行模式的,当然,我们管理服务器也一般通过putty等工具远程连接到服务器,为了方便,我们用root用户登录。在命令行中键入:

 crontab -e

          之后就会打开一个文件,并且是非编辑状态,则是vi的编辑界面,通过敲键盘上的i,进入编辑模式,就可以编辑内容。这个文件中的每一行就是一个定时任务,我们新建一行,就是新建一条定时           任务(当然是指这一行内按照一定的格式进行书写)。我们现在来举个例子,增加一行,内容如下:

00 * * * * lynx -dump https://www.yourdomain.com/script.php

          这是什么意思呢?实际上上面这一行由两部分组成,前面一部分是时间,后面一部分是操作内容。例如上面这个,

00 * * * *

          就是指当当前时间的分钟数为00时,执行该定时任务。时间部分由5个时间参数组成,分别是:

          分 时 日 月 周

          第1列表示分钟1~59 每分钟用或者 */1表示,/n表示每n分钟,例如*/8就是每8分钟的意思,下面也是类推
          第2列表示小时1~23(0表示0点)
          第3列表示日期1~31
          第4列表示月份1~12
          第5列标识号星期0~6(0表示星期天)

          整个句子的后面部分就是操作的具体内容。

lynx -dump https://www.yourdomain.com/script.php

          意思就是说通过lynx访问这个url。我们在使用中主要用到lynx、curl、wget来实现对url的远程访问,而如果要提高效率,直接用php去执行本地php文件是最佳选择,例如:

00 */2 * * * /usr/local/bin/php /home/www/script.php

          这条语句就可以在每2小时的0分钟,通过linux内部php环境执行script.php,注意,这里可不是通过url访问,通过服务器环境来执行哦,而是直接执行,因为绕过了服务器环境,所以效率当然要          高很多。

          好了,已经添加了几条需要的定时任务了吧。点击键盘上的Esc键,输入“:wq”回车,这样就保存了设置的定时任务,屏幕上也能看到提示创建了新的定时任务。接下来就是好好写你的script.php            了。
      windows:

          windows上和linux上有一个类似的cmd和bat文件,bat文件类似于shell文件,执行这个bat文件,就相当于依次执行里面的命令(当然,还可以通过逻辑来实现编程),所以,我们可以利用bat命          令文件在windows服务器上面实现PHP定时任务。实际上在windows上定时任务,和linux上道理是一样的,只不过方法和途径不同。好了下面开始。

          首先,在一个你觉得比较适当的位置创建一个cron.bat文件,然后用文本编辑器打开它(记事本都可以),在里面写上这样的内容:

D:\php\php.exe -q D:\website\test.php

          这句话的意思就是,使用php.exe去执行test.php这个php文件,和上面的contab一样,绕过了服务器环境,执行效率也比较高。写好之后,点击保存,关闭编辑器。

          接下来就是设置定时任务来运行cron.bat。依次打开:“开始–>控制面板–>任务计划–>添加任务计划”,在打开的界面中设置定时任务的时间、密码,通过选择,把cron.bat挂载进去。确定,这样          一个定时任务就建立好了,在这个定时任务上右键,运行,这个定时任务就开始执行了,到点时,就会运行cron.bat处理,cron.bat再去执行php。

  2、自由选择时间

    常用的博客系统wordpress有一个wp-corn文件来执行博客的定时发送,博主以wp-corn为原型编写了一个文件。

    wp-corn是非常消耗服务器资源的一个策略。每个人访问博客的时候都会调用wp-corn文件(读取当前服务器时间,判断是否发送)。缺陷是在访问人数比较小的时候不能及时发送,人数过多又造成服务器性能降低。

    博主做项目的时候公司提供的是一台windows服务器。采用的方法是在服务器上打开一个页面,每分钟自动刷新一次(简单的js脚本,不再提供代码)。

    linux上还没有解决方案,不过各位大神也就是写个shell的事0.0

转载于:https://www.cnblogs.com/starFeeling/p/6751921.html

PHP实现定时任务的几种方法相关推荐

  1. php实现定时任务的两种方法

    php实现定时任务的两种方法 1.利用宝塔面板简单设置定时任务 2.在Crontab中使用URL执行脚本 1.利用宝塔面板简单设置定时任务 1,在对应的服务器上安装宝塔. 2,打开宝塔设置计划任务. ...

  2. java se 定时任务_Java实现定时任务的三种方法

    一.Quartz的特点 按作业类的继承方式来分,主要有以下两种: 作业类继承org.springframework.scheduling.quartz.QuartzJobBean类的方式作业类不继承o ...

  3. php任务分配思路_PHP执行定时任务的几种方法思路

    PHP本身是没有定时功能的,PHP也不能多线程.PHP的定时任务功能必须通过和其他工具结合才能实现,例如WordPress内置了wp-cron的功能,很厉害.本文,我们就来深入的解析几种常见的php定 ...

  4. 详解PHP实现定时任务的五种方法

    定时运行任务对于一个网站来说,是一个比较重要的任务,比如定时发布文档,定时清理垃圾信息等,现在的网站大多数都是采用PHP动态语言开发的,而对于PHP的实现决定了它没有Java和.Net这种AppSer ...

  5. Java中实现定时任务的3种方法!

    今天我们不用任何框架,用最朴素的 Java API 来实现定时任务,本文会介绍 3 种实现方案,我们一起来看... 1. sleep 这也是我们最常用的 sleep 休眠大法,不只是当作休眠用,我们还 ...

  6. PHP 实现定时任务的几种方法

    [转]http://www.phpchina.com/portal.php?mod=view&aid=40092 这几天需要用PHP写一个定时抓取网页的服务器应用. 在网上搜了一下解决办法, ...

  7. [转]Java实现定时任务的三种方法

    一.使用Thread+sleep的方式 /** * 普通thread * 这是最常见的,创建一个thread,然后让它在while循环里一直运行着, * 通过sleep方法来达到定时任务的效果.这样可 ...

  8. 不用任何框架,Java 就能实现定时任务的 3 种方法

    是的,不用任何框架,用我们朴素的 Java 编程语言就能实现定时任务. 今天,栈长就介绍 3 种实现方法,教你如何使用 JDK 实现定时任务! 1. sleep 这也是我们最常用的 sleep 休眠大 ...

  9. java实现自动任务_Java实现定时任务的三种方法

    普通thread 这是最常见的,创建一个thread,然后让它在while循环里一直运行着,通过sleep方法来达到定时任务的效果.这样可以快速简单的实现,代码如下: public class Tas ...

最新文章

  1. 时钟周期及秒(s) 毫秒(ms) 微秒(μs) 纳秒(ns) 皮秒(ps)之间转换
  2. php copy 文件夹,php删除与复制文件夹及其文件夹下所有文件的实现代码
  3. codeforce No to Palindromes!(枚举)
  4. 交易系统如何确保账簿100%准确
  5. AspectJ——预编译方式实现AOP
  6. c fun函数求n个整数的平均值_OOP 面向对象编程:由 C 到 C++
  7. linux游戏主机,Steam OS界面介绍
  8. 单GPU实现20Hz决策,最新基于序列生成模型的高效轨迹规划方法
  9. Laya 将传统的bitmap字体 转换成 Laya可以识别的字体
  10. C#用firefox3.6下载yunfile的文件
  11. 吴恩达老师,被曝靠「教书」实现首个IPO上市,Coursera估值50亿美元
  12. Apache Flink fault tolerance源码剖析(六)
  13. 把三角函数以及反正弦三角函数的导数
  14. java拨号上网_华为AR路由器AR207-S配置pppoe拨号上网图解实例
  15. CSS动画开启硬件加速
  16. 手把手教你Charles抓包工具使用(建议收藏)
  17. mysql数据库建立_Mysql 数据库创建基本步骤
  18. Arduino core for ESP8266 安装失败问题处理方法
  19. 关于什么是表?以及如何解表?
  20. cifar-10数据集+ResNet50

热门文章

  1. [No000092]SVN学习笔记3-Import/Checkout(迁入/迁出),GetLock(加锁)
  2. CSS——如何清除浮动
  3. JavaScript面向对象编程(1)-- 基础
  4. 微型计算机的评估指标,T∕CECA-G 0060-2020 “领跑者”标准评价要求 微型计算机(9页)-原创力文档...
  5. matlab结构阵列设计,ROM阵列及其版图结构的制作方法
  6. 【Groovy】Groovy 方法调用 ( 使用闭包创建接口对象 | 接口中有一个函数 | 接口中有多个函数 )
  7. 【C 语言】字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序打印字符串 | 递归要素 | 递归停止条件 | 递归操作 )
  8. 【Android 逆向】Android 系统文件分析 ( 根目录下的目录和文件 | /data/ 应用和用户数据目录 | /mnt/ 挂载其它设备目录 )
  9. 【鸿蒙 HarmonyOS】界面跳转 ( AbilitySlice 之间的界面跳转 | AbilitySlice 之间的值传递 )
  10. 【C 语言】C 字符串 ( 表示方法 | strcpy | strcat | strlen | strcmp )