zoukankan      html  css  js  c++  java
  • linux下定时执行php脚本 新风宇宙

    PHP是服务器端的脚本语言,如果想定时执行某些程序的话却没有很方便的办法。
    在Linux服务器下的crontab可以稳定的做到定时执行PHP脚本。

    crontab 是用来让使用者在固定时间或固定间隔执行程序之用
    在linux平台上如果需要实现任务调度功能可以编写cron脚本来实现。
    以某一频率执行任务
    linux缺省会启动crond进程,crond进程不需要用户启动、关闭。
    crond进程负责读取调度任务并执行,用户只需要将相应的调度脚本写入cron的调度配置文件中。
    cron的调度文件有以下几个:

    1. crontab
    2. cron.d
    3. cron.daily
    4. cron.hourly
    5. cron.monthly
    6. cron.weekly

    如果用的任务不是以hourly monthly weekly方式执行,则可以将相应的crontab写入到crontab 或cron.d目录中。
    示例:
    每隔一分钟执行一次脚本 /opt/bin/test-cron.sh
    可以在cron.d新建脚本 echo-date.sh
    内容为
    */1 * * * * root /opt/bin/test-cron.sh

    执行PHP脚本

    方法1
    如果你想定时执行某一个PHP脚本 可以直接这样写:
    */1 * * * * root -q /bin/local/php /path/to/your/php/script.php (每一分钟执行一次script.php)
    注意,这样写需要把PHP变成可执行的脚本文件。在命令行下,脚本所在目录
    chmod +x script.php

    方法2
    上面的方法有一个问题:当script脚本中有include文件时,脚本根本找不对PHP的路径,php将会在/bin/local/php目录下找文件,当然找不到。
    所以,遇见这种情况,按照下面的方法做:
    在终端上输入如下命令得到sh 和 lynx 程序的路径:
    whereis sh
    whereis lynx
    or
    which sh
    which lynx
    随便输入一个,其中便会返回你要的路径。如果你的系统里没有lynx,试试links,w3m,或者 links2,这些是其它的文本模型浏览器。这些浏览器将会运行你的脚本。
    然后你需要创建一个sh文件,用它来调用php文件,通过lynx。假设你的服务器已经安装了lynx,sh路径为 /bin/sh,lynx路径为 /usr/local/bin/lynx
    #!/bin/sh
    /usr/local/bin/lynx -source http://www.yoursite.com/folder/script.php
    注意感叹号
    把这个脚本保存为cron-lynx.sh
    保存到一个你找得到的地方,比如:

    你可以把它放在网站根目录。
    然后再创建一个script.php的文件。当cron运行的时候,将会通过lynx来调用它。这个文件可以通过浏览器来访问。

    然后编辑主机的crontab,像下面这样。
    */1 * * * * root /bin/sh /usr/www/yourdirectory/sh_scripts/cron-lynx.sh
    在/bin/sh 和 /usr 间有空格。就这样就设好了,还有一点要注意的是,你的sh文件和php文件都正确无误。

    例子1

    [b]在linux下定时执行PHP脚本[/b]
    按正常的方式写PHP
    $file = '/htdocs/www/b100/egspace/Bin/test/'.date('H').'-'.date('i').'-'.date('s').'.txt';
    file_put_contents($file,date('Y-m-d'));
    ?>
    把PHP文件属性改为shell文件:
    chmod +x test.php
    再编辑crontab:
    crontab -e
    加上一行:
         */1 * * * * /usr/local/bin/php -q /htdocs/www/b100/egspace/Bin/test.php
    (在安装PHP的时候,会产生一个可执行文件,文件名为php, 将它copy 到 /usr/local/bin下;注意到 PHP 原本是应用在网页应用的﹐因此它内定会送出 HTML 的HEADER﹐但 是在此我们是要将 PHP 用作 Shell Script﹐"-q" 就是表示不要送 出HEADER 的意思.你可以试试看不加上 -q 的显示结果。)

    注:cron秒来执行程序

    crontab -e
    * * * * * /bin/date >>/tmp/date.txt
    * * * * * sleep 20; /bin/date >>/tmp/date.txt
    * * * * * sleep 40; /bin/date >>/tmp/date.txt

    2.检查结果
    tail -f /tmp/date.txt

  • 相关阅读:
    让vs2013自带的IISExpress支持apk文件下载
    使用h5开发跨平台APP确保数据安全交互---服务器篇
    如何使用iis发布多个ftp,为何ftp 503错误?
    HttpApplication执行顺序
    EXCEL2010分成多个窗口的,解决单个窗口显示多个文档的弊病
    搜索引擎优化(SEO)解决方案
    .net网站快速停机设置app_offline
    SQL SERVER 连接 SQL SERVER 连接服务器
    SQL SERVER 备份还原 局域网 远程
    postgres 临时表
  • 原文地址:https://www.cnblogs.com/php5/p/1876197.html
Copyright © 2011-2022 走看看