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

一、定时发送任务解析

  在进行手机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

时间: 2024-10-09 13:46:05

关于定时发送服务的解决办法(PHP)的相关文章

引用:WCF链接服务超时解决办法

WCF客户端在实际应用中,有许多应用技巧需要我们不断的去积累经验来掌握.这样才能避免或者更好的解决一些应用中出现的问题.在这里我们将会为大家介绍一下WCF链接服务超时的相关处理方法. 调用服务器端时,当点击十次后,客户端就会出现死机,然后是一份钟超时. System.TimeoutException: 对“http://localhost:3768/”的 HTTP 请求已超过为 00:01:00 分配的超时.为此操作分配的时间可能是较长超时的一部分. 查找原因后发现客户端在使用完通道后,没有进行

关于 通过http请求 无法访问Linux下的ftp服务的解决办法!

解决办法:1.首先进入到NGINX配置文件下面: 然后继续往下: 其中 "server_name"表示的是本机IP 也可设置成 "localhost","location"表示本地的意思 . 先看根目录"root /home/ftpuser/hry/"表示的是根路径, "images"表示本地路径. 区别 比如访问路径"http://192.168.64.128/home/ftpuser/hry/

win8安装 VisualSVN Server 服务失败解决办法——花生壳+visiualSVN实现外网访问局域网内的SVN(二)

接前一篇内网实现SVN外网发布,若想把SVN发布到外网上,必须在本机或者服务器上装上VisualSVN Server .在实践的过程中,我的SVN安装一直报错.报错如下 对于这个错误,我查了一些资料,大家都非常赞同的解决方法是(详情可见http://jingyan.baidu.com/article/4dc40848a0dcdcc8d946f1cd.html): 1.在计算机上右键,选择管理,进入界面后,点中服务项,可以看到一个"VisualSVN Server"项,状态还没有启动(因

在Windows2012下安装SQL Server 2005无法启动服务的解决办法

虚拟机环境中,用了Windows Server2012,安装SQL SERVER 2005的过程中,总是提示无法启动服务,各种搜索,做了以下尝试: 1.修改IP网络设定. 2.VIA网络禁用. 3.修改CPU核数为2的整数倍等方式. 4.修改SQL SERVER服务的登录方式等,都没有解决, 最后发现了这篇文章,采用替换SQL的关键文件就能解决问题. 因为尝鲜安装了Windows2012,的确很不错,唯一的遗憾就是不支持Sql Server 2005的安装.找了很多办法,基本上都有缺陷.现在终于

Contact Form 7邮件发送失败的解决办法

一.contact form 7无法发送邮件的原因 对mail()函数的不支持. Contact Form 7表单提交失败在使用过程中会出现,归根结底原因在于wordpress主机问题,由于国 内很多主机并不是wordpress专用主机,采用的是所谓的全能WIN+IIS+PHP,而这样的环境很少支持wordpress本身的mail()发 送邮件函数.所以导致Contact Form 7表单提交失败的原因.这也引出WP Mail SMTP设置问题. 二.解决方法 解决这个问题有两点 1.下载一个插

win7 提示"Windows 无法连接到System Event Notification Service服务......"的解决办法

登录win7系统,突然出现如图1的提示,无线网络中断,不能上网,多次插拔无线网卡问题依然. 图1 解决过程如下: 1.检查网卡硬件状况,在设备管理器中查看网卡现象正常,排除网卡硬件故障. 2.查看服务中部分状态为"自动"的服务并没有启动,其中包括"System Event Notification",手动启动提示错误,查看系统日志发现日志无法查看,应该是日志服务也没有启动的缘故. 3.百度后发现提供的解决方法都是运行——CMD,再运行"NETSH WINS

Windows无法连接到System Event Notification服务的解决办法

前几天安装了一个Windows漏洞补丁,装完没啥问题,但是接下来几天就莫名其妙地出问题,每次开机后资源管理器先挂一次倒也罢了,难以忍受的是本来网络好好的,突然就什么都连不上了,必须清理DNS缓存重启才能解决问题,而重启后又会挂一次资源管理器--虽然这种断网的情况出现频率不高,但是联系几天每天一次已经够麻烦了. 联想到前几天刚打的补丁,怀疑是这个补丁的问题,于是怒卸补丁立即重启,问题来了:开机奇慢(大约2~3分钟),进入桌面后所有网络都不可用,并且右下角气泡警告,信息大致是这样: Windows无

微信小程序-工具无法加载本地模拟开发服务的解决办法

微信小程序开发工具出现如下问题: 因为网络代理软件或者 VPN 影响,工具无法加载本地模拟开发服务  请尝试以下任一解决方案1.关闭相关网络代理软件,重新编译成功后,再启动相关网络代理软件: 2.配置相关软件不针对 *.appservice.open.weixin.qq.com 和 *.debug.open.weixin.qq.com 进行代理: 3.配置相关软件不针对 开发者工具 做代理 但是根本没用任何代理,找了很多方法,最终解决: 设置windows防火墙,允许微信web开发者工具使用网络

docker在centos7系统镜像下无法启动服务的解决办法

成功安装服务后发现无法启动,报错为:Failed to get D-Bus connection: Operation not permitted 系统为centos7官方版镜像,源和依赖之类的都已更新,查了下是官方镜像的一个bug docker run -d -v /sys/fs/cgroup:/sys/fs/cgroup:ro --name centos pro_env /usr/sbin/init 启动一个常驻的容器,centos为容器名称,pro_env为镜像名称,不知道镜像名称可以do