美文网首页
记录解决crontab不能定时执行php的原因

记录解决crontab不能定时执行php的原因

作者: rightchen | 来源:发表于2018-03-23 13:28 被阅读0次

           最近开发了一个给手机客户端推送消息的功能,需求是客户端对用户进行关注后,被关注的人登录的移动设备便会收到推送的提醒消息,增加用户黏度。

            本着异步发送请求,关注用户后,不立即调用第三方推送平台的接口,而是将任务放入到消息列队中,由其他进程完成推送。这样客户端的关注动作也会及时得到相应。这时想起来crontab的任务计划。

           想着用户操作关注动作之后,信息提示发送延迟不超过3秒。便在网上查阅资料,找找crontab的任务计划详解,发现没有按秒执行的任务。网上提供了另外一种思路:写一个shell script,里面有一个循环,执行20次,每次暂停3秒钟。然后crontab的命令每分钟执行shell script。

           按照这种思路写好了shell script和crontab。发现点击关注用户操作后,线上数据库并没有改动。排查了很多方面的问题,包括shell script、crontab权限等等。最终把问题锁定到shell脚本中php的执行语句

    语句如下:

    php -f /data/wwwroot/default_push.php

           没有执行成功。如果换了shell向文件的输出语句,语句定时写入到文本文件中。所以排除了shell script语法错误和crontab没有执行的原因。

    便在网上找解决方案:

    网上有些文章提示了php环境变量的事,我按照网络上提示的一一排查,包括shell的执行权限,变量名之类的。最终确定到php -r /data/wwwroot/default_push.php的问题。将这一行替换成

    /usr/local/php/bin/php /data/wwwroot/default_push.php

    然后执行成功了!!!!!果然是环境变量的事情。

    前面补充上php命令的完整路径。

    就好了

    深夜完成,特此记录。困扰了我好几天的问题。

    相关文章

      网友评论

          本文标题:记录解决crontab不能定时执行php的原因

          本文链接:https://www.haomeiwen.com/subject/lbxxcftx.html