代码之家  ›  专栏  ›  技术社区  ›  captainspi

将php集成到cronjob的shell脚本中?

  •  1
  • captainspi  · 技术社区  · 13 年前

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

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

    这可能吗?我是Linux文盲。我在Fedora上安装了一些RPM,但仅此而已。请耐心等待。谢谢!

    1 回复  |  直到 13 年前
        1
  •  1
  •   Community Mohan Dere    9 年前

    只要过去 --timestamping 到您的wget命令。

    或者,如果你更熟悉PHP的方法,你可以检查 this question 以获得可用的方法。

    使用卷曲 HEAD 请求获取文件的头并解析出 Last-Modified: 头球

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

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

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

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

    省略以下序列中的$,因为它表示命令提示符

    $ chmod u+x helloworld

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

    $ ls
    helloworld
    $ ./helloworld
    Hello World
    $
    

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

    $ readlink -f helloworld
    /home/SPI/helloworld
    

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

    推荐文章