之前写了一篇文章,说了一下php执行linux系统命令的一些东西。

而我需要做的是linux上执行php的操作,而且是定时操作

一、需求

不通过php脚本去执行,而是通过远程url的方式去执行,相当于在linux上定时访问操作一个url。

为什么需要远程url?

  • php的系统是通过框架开发的,不是一个简单的php脚本,因此无法通过运行php脚本实现。
  • 要操作的系统架设在别的服务器上,只有一个url供操作。

二、实现

linux执行远程url,实际上就是相当于使用命令去访问一个url,然后完成一系列的操作而已。

远程执行url使用的工具:lynx 我比较喜欢使用这个,别的一样的。

1、lynx

下载地址如下(选择稳定的一个版本下载即可):

然后加压并编译安装安装即可

$ ./configure --prefix=/usr/local/lynx
$ make && make install

安装成功后,要全局直接使用lynx,需要在/usr/bin/下创建连接,不过我没有直接使用下面的方式即可

$ /usr/local/lynx/bin/lynx url

当然,肯定建议做个链接到/usr/bin/

这样子就能够直接使用文本浏览器了,不过需要注意的一点是:

我们只需要执行url,而不是访问url,因此需要加参数:

$ /usr/local/lynx/bin/lynx -dump url

-dump的作用是将结果显示,别的都不显示。

关于lynx配置可以通过 lynx -h 看看:

l.jpg

2、crontab定时任务

关于crontab网上太多介绍了,我就不详细写了,我的需求是每分钟执行一次url

$ contab -e 
# 添加的内容如下:
*/1 * * * * /usr/local/lynx/bin/lynx -dump url

一个值得参考的链接:https://segmentfault.com/a/1190000002955509

三、优化crontab

通过上面的操作已经实现了定时执行一个远程url,但是执行的结果我们什么都不知道。

一般为了调试和错误,都会开一个log,专门记录每次执行的结果,而远程的php也应当输出一些信息证明是否操作成功。

因此对crontab做如下的更改:

*/1 * * * * /usr/local/lynx/bin/lynx -dump URL >> /data/live.log 2>&1

上面的意思是每分钟执行一次URL,将结果都输出到/data/live.log中

上面提到过,-dump能够将执行的结果打印出来,因此就能做到执行日志的效果。

如图:
l2.jpg