关于PHP定时发送服务的解决办法


Posted in PHP onApril 23, 2017

一、定时发送任务解析

在进行手机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脚本,不再提供代码)。

以上所述是小编给大家介绍的关于PHP定时发送服务的解决办法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
我的群发邮件程序
Oct 09 PHP
AJAX for PHP简单表数据查询实例
Jan 02 PHP
开源SNS系统-ThinkSNS
May 18 PHP
备份mysql数据库的php代码(一个表一个文件)
May 28 PHP
php页面跳转代码 输入网址跳转到你定义的页面
Mar 28 PHP
新浪SAE云平台下使用codeigniter的数据库配置
Jun 12 PHP
php去掉URL网址中带有PHPSESSID的配置方法
Jul 08 PHP
Yii不依赖Model的表单生成器用法实例
Dec 04 PHP
php返回相对时间(如:20分钟前,3天前)的方法
Apr 14 PHP
PHP判断手机是IOS还是Android
Dec 09 PHP
PHP实现查询手机归属地的方法详解
Apr 28 PHP
PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】
Apr 14 PHP
php读取和保存base64编码的图片内容
Apr 22 #PHP
PHP7多线程搭建教程
Apr 21 #PHP
mac系统下安装多个php并自由切换的方法详解
Apr 21 #PHP
php获取excel文件数据
Apr 21 #PHP
PHP实现限制IP访问的方法
Apr 20 #PHP
PHP简单读取xml文件的方法示例
Apr 20 #PHP
PHP编程获取音频文件时长的方法【基于getid3类】
Apr 20 #PHP
You might like
如何对PHP程序中的常见漏洞进行攻击
2006/10/09 PHP
PHP数据类型之整数类型、浮点数的介绍
2013/04/28 PHP
PHP获取当前页面URL函数实例
2014/10/22 PHP
详解PHP+AJAX无刷新分页实现方法
2015/11/03 PHP
php for 循环使用的简单实例
2016/06/02 PHP
php 使用html5实现多文件上传实例
2016/10/24 PHP
PHP基于DOMDocument解析和生成xml的方法分析
2017/07/17 PHP
JavaScript 输入框内容格式验证代码
2010/02/11 Javascript
seajs1.3.0源码解析之module依赖有序加载
2012/11/07 Javascript
原生js实现shift/ctrl/alt按键的获取
2013/04/08 Javascript
js showModalDialog 弹出对话框的简单实例(子窗体)
2014/01/07 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
2014/05/29 Javascript
控制文字内容的显示与隐藏示例
2014/06/11 Javascript
JQuery实现表格动态增加行并对新行添加事件
2014/07/30 Javascript
Javascript访问器属性实例分析
2014/12/30 Javascript
javascript验证身份证号
2015/03/03 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
2015/06/09 Javascript
javascript实现根据时间段显示问候语的方法
2015/06/18 Javascript
Node.js使用MySQL连接池的方法实例
2018/02/11 Javascript
webpack打包并将文件加载到指定的位置方法
2018/02/22 Javascript
vue组件与复用详解
2018/04/08 Javascript
解决JQuery的ajax函数执行失败alert函数弹框一闪而过问题
2019/04/10 jQuery
Python中文件操作简明介绍
2015/04/13 Python
Python实现对比不同字体中的同一字符的显示效果
2015/04/23 Python
python使用matplotlib绘制折线图教程
2017/02/08 Python
PyQt5每天必学之带有标签的复选框
2018/04/19 Python
使用Python实现一个栈判断括号是否平衡
2018/08/23 Python
Python3.7实现中控考勤机自动连接
2018/08/28 Python
python对象转字典的两种实现方式示例
2019/11/07 Python
python 无损批量压缩图片(支持保留图片信息)的示例
2020/09/22 Python
用CSS3的box-reflect来制作倒影效果
2016/11/15 HTML / CSS
毕业生找工作的求职信范文
2013/12/24 职场文书
中专自我鉴定
2014/02/05 职场文书
房产公证书样本
2015/01/23 职场文书
学雷锋团日活动总结
2015/05/06 职场文书
Golang解析JSON对象
2022/04/30 Golang