在shell脚本中集成php用于cronjob?

时间:2012-09-06 07:25:48

标签: php cron cron-task

我想每隔X小时为一个例行任务执行一个cronjob。 cronjob基本上执行一个shell脚本,该脚本又使用WGET命令从远程服务器下载文件。但是,在我运行这个shell脚本之前,我希望cronjob执行一个php脚本,它将检查更新是否可用(浪费BW并一遍又一遍地下载相同的文件没有意义),如果是,它应该传递shell脚本的更新URL,后者又使用WGET命令。

cronjobs是从主机管理面板设置的。没有别的办法了。作为共享托管服务,我不允许访问PHP上的其他功能,这些功能也可以为我完成任务。

这可能吗?我是Linux的文盲。我已经在Fedora上安装了几个RPM,但这就是它。请多多包涵。谢谢!

1 个答案:

答案 0 :(得分:1)

只需将--timestamping传递给您的wget命令。

或者,如果您更熟悉PHP的方法,可以检查this question是否有可用的方法。

使用curl HEAD请求获取文件的标头并解析Last-Modified:标头。

要将php脚本用作常规命令行可执行文件,请将此作为起点:

#!/bin/env php
<?php
echo "Hello World\n";

保存没有.php的文件,并将其放在服务器无法提供服务的地方。

接下来,设置可执行位,以便您可以像常规程序一样执行脚本 (u+x在以下命令中表示为helloworld授予[u] ser e [x] ecute权限,而chmod是unix变体用于设置文件权限的命令)

按以下顺序省略$,因为它代表命令提示符

$ chmod u+x helloworld

现在您可以通过在bash提示符中调用它来执行命令行脚本:

$ ls
helloworld
$ ./helloworld
Hello World
$

从这里,您可以获得可执行脚本的完整路径:

$ readlink -f helloworld
/home/SPI/helloworld

现在您可以使用可执行脚本的路径安装cronjob。