关于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脚本,不再提供代码)。

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

时间: 2024-09-25 13:42:15

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

修改计算机名或IP后Oracle10g无法启动服务的解决办法

  修改计算机名或IP后Oracle10g无法启动服务的解决办法 遇到的问题,问题产生原因不详.症状为,windows服务中有一项oracle服务启动不了,报出如下错误. Windows 不能在 本地计算机 启动 OracleDBConsoleorcl .有关更多信息,查阅系统事件日志.如果这是非 Microsoft 服务,请与服务厂商联系,并参考特定服务错误代码 2 后从网上寻得一贴,问题解决,解决原因不详,反正就是解决了. 问题描述:学校机房母盘安装Oracle10g传输到其它机器,母盘的O

Win7出现未能连接一个Windows服务的解决办法

  近日有网友"所爱隔山海"Win7电脑在开机的时候遇到了开机很慢,开机后提示:未能连接一个Windows服务.如果遇到电脑出现未能连接一个Windows服务该如何解决呢?这就是小编今天要分享的一个电脑小技巧. Win7出现"未能连接一个Windows服务"错误提示,主要是由于电脑系统中的"System Event Notification"服务没有正常开启导致的,可能是用户在使用一些第三方安全软件优化开机启动项的时候,不小心禁用了此服务,只需重

交管12123APP服务异常解决办法

给各位交管12123软件的使用者们来详细的解析分享一下服务异常问题的解决办法. 办法分享:     1.请确认手机SIM卡类型和手机支持的网络类型是否对应; 2.确认手机SIM卡没有出现欠费停机的情况(此情况最容易被忽略); 3.进入手机设置--移动网络--接入点名称,点击选择重置为默认设置尝试. 4.检查一下是否有流量监控软件(包括系统自带的网络助手)强制关闭了网络,如果有,可以将流量上限取消或者调到适合的数值; 5.目前大部分软件和网页都需要使用net接入点,如果出现连接不上的情况请尝试更改

php中mail函数发送文件失败解决办法

之前的那台服务器转移过来后,发现网站用mail()发送邮件发不了.但是发现sendmail明明已经安装. 如果没有安装sendmail可以执行  代码如下 复制代码 yum install sendmail 对了,主机名要设置一个域名格式的.例如:sangsir.com 不然重启sendmail的时候会特别久才启动起来.(否则要等很久)    代码如下 复制代码 hostname sangsir.com 接着看看sendmail是否正常运行    代码如下 复制代码 service sendma

“httpd未被被识别的服务”的解决办法

 使用自动编译安装会出现这个问题,也就是输入  #service httpd restart 给出这样的提示:这时候要重启可以 #/usr/local/apache2/bin/apachectl start   如果你希望使用 #service httpd restart 那么需要按下面的做法 注意的是daemon /usr/local/apache2/bin/apachectl 每个人安装的不同 你要写你自己的   用chkconfig --list可以看到有很多项目,这些都放在目录/etc/

三星S4 4G无法发送短信怎么办?S4 4G无法发送短信解决办法

1.三星S4 4G界面有一点不一样哦,我们点击[信息]图标进入,如果没找到自己在下一屏找找吧.     2.点击手机左下角的[菜单]键,然后选择[设定].   3.然后在进入设定中我们找到[短信/彩信]它进入进入.     4.接着在打开的[信息中心]选项进入.     5.在此我们就可以点击[信息中心号码]输入号码了,记入中国要加+086才可以,然后点击[确定]即可.       最好我们再去试一下是不是可以发短信了呀,如果是不能发彩信我们需要在彩信设置中进行一些简单的设置哦.  

dubbo filter 使用-调用Dubbo服务报以下错误,原因和解决办法

问题描述 调用Dubbo服务报以下错误,原因和解决办法 用mvn 创建了一个子项目jar dubbo filter,在生产者中无法调用,报 No such extension xxx for filter/com.alibaba.dubbo.rpc.Filter

mysql服务无法启动(1067)解决办法

  mysql教程服务无法启动(1067)解决办法 把mysql程序卸载后, 重装, 结果mysql服务启动不了, 解决方法: 1: 先卸载mysql, 手动将其安装目录里没有删除干净的文件全部删除. 2: 将C:ProgramDataMySQL 里有关mqsql的文件全部删除. 3: 重新安装 mysql 程序. mysql服务就可以正常启动了 MySQL服务无法启动(1067)问题解决 1,安装目录,将my.ini中的datadir的值更改为:"%安装目录%/data/" 2,进入

WinXP系统Bits服务丢失的解决办法

  使用WinXP系统WindowsUpdate功能时,发现进度条莫名其妙没了,查看系统日志中错误如下: "Background Intelligent Transfer Service 服务因下列错误而停止: 系统找不到指定的文件." 下面系统之家小编为大家介绍一下解决办法,需要的朋友可以试试!请大家按以下顺序执行修复操作,每一步都检查服务是否恢复,如果没有恢复,再进入下一步过程继续修复. 1.首先,按下Win+R键盘打开运行; 2.输入以下命令(会需要系统安装光盘): %windi