• 技术文章 >php教程 >PHP源码

    php计划任务的实现方法,支持windows/linux下运行

    2016-06-08 17:24:50原创566
    文章介绍了利用php自身来运行计划任务同时还介绍了在winows下利用winodows计划任务来操作,还有在linux中利用linux的方法来实现。

    使用php让浏览器刷新需要解决几个问题
    1.PHP脚本执行时间限制,默认的是30m 解决办法:set_time_limit();或者修改PHP.ini 设置max_execution_time时间(不推荐)
    2.如果客户端浏览器关闭,程序可能就被迫终止,解决办法:ignore_user_abort即使关闭页面依然正常执行
    3.如果程序一直执行很有可能会消耗大量的资源,解决办法使用sleep使用程序休眠一会,然后在执行

    代码如下 复制代码

    ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.

    set_time_limit(3000);// 通过set_time_limit(0)可以让程序无限制的执行下去

    $interval=5;// 每隔5s运行

    //方法1--死循环

    do{

    echo '测试'.time().'
    ';

    sleep($interval);// 等待5s

    }while(true);

    //方法2---sleep 定时执行

    require_once './curlClass.php';//引入文件

    $curl = new httpCurl();//实例化

    $stime = $curl->getmicrotime();

    for($i=0;$i<=10;$i++){

    echo '测试'.time().'
    ';

    sleep($interval);// 等待5s

    }

    ob_flush();

    flush();

    $etime = $curl->getmicrotime();

    echo '


    ';

    echo round(($etime-stime),4);//程序执行时间

    WINDOWS中设置计划任务执行PHP文件

    在网上找了些WINDOWS执行PHP的计划任务的方法,有一个写得很全,可惜在我这竟然没通过。最后不得不综合各门派的方法,才能在我这运行成功。

    1、写一个PHP程序,命名为test.php,内容如下所示:

    代码如下 复制代码

    $fp = fopen("test.txt", "a+");

    fwrite($fp, date("Y-m-d H:i:s") . " 成功成功了!n");

    fclose($fp);

    ?>

    程序大胆地写,什么includerequire尽管用,都没问题
    2、新建Bat文件,命名为test.bat,内容如下所示:

    代码如下 复制代码
    1 D:phpphp.exe -q D:websitetest.php


    //相应目录自己改上

    3、建立WINDOWS计划任务:
    开始–>控制面板–>任务计划–>添加任务计划
    浏览文件夹选择上面的bat文件
    设置时间和密码(登陆WINDOWS的)
    保存即可了。
    4、over! 可以右键计划任务点“运行”试试

    Linux的Crontab执行PHP脚本

    一、在Crontab中使用PHP执行脚本
    就像在Crontab中调用普通的shell脚本一样(具体Crontab用法),使用PHP程序来调用PHP脚本。
    每一小时执行myscript.php如下:

    代码如下 复制代码

    # crontab -e
    00 * * * * /usr/local/bin/php /home/john/myscript.php

    /usr/local/bin/php为PHP程序的路径。

    二、在Crontab中使用URL执行脚本
    如果你的PHP脚本可以通过URL触发,你可以使用lynx或curl或wget来配置你的Crontab。
    下面的例子是使用Lynx文本浏览器访问URL来每小时执行PHP脚本。Lynx文本浏览器默认使用对话方式打开URL。但是,像下面的,我们在lynx命令行中使用-dump选项来把URL的输出转换来标准输出。

    代码如下 复制代码
    00 * * * * lynx -dump http://www.centos.bz/myscript.php

    下面的例子是使用CURL访问URL来每5分执行PHP脚本。Curl默认在标准输出显示输出。使用”curl -o”选项,你也可以把脚本的输出转储到临时文件。

    代码如下 复制代码
    */5 * * * * /usr/bin/curl -o temp.txt http://www.centos.bz/myscript.php

    下面的例子是使用WGET访问URL来每10分执行PHP脚本。-q选项表示安静模式。”-O temp.txt”表示输出会发送到临时文件。

    代码如下 复制代码
    */10 * * * * /usr/bin/wget -q -O temp.txt http://www.centos.bz/myscript.php

    php定时计划任务介绍2010-05-06 10:10以前对se特别感兴趣,但是自己又不会java,lucene等搜索引擎开发工具,于是不断挖掘php的功效。

    最后发现php也可以做抓取,并且原理很易:直接获取页面源文件,然后通过正则或字符串的参照截取来获取需要的信息。但是性能上不能和搜索引擎的多线程抓取相比。

    实现了上一步之后,又思考着,如果抓取可以自动定时获取,那么人工运行可执行页面也就省下来了。

    后来也在一些php开源程序中了解到关于"计划任务"的效果:可以定时运行某程序,比如数据库备份,更新缓存,生成静态页面,生成网站地图等。

    最近由于项目需要定时更新远程数据库到本地,网上搜了搜,还真找到了。

    ignore_user_abort();函数搭配set_time_limit(0);和sleep($interval);即可实现以上自动更新。

    先给出一个基本的范式,其中有个人的测试程序:

    代码如下 复制代码

    ignore_user_abort(); // run script in background
    set_time_limit(0); // run script forever
    $interval=30; // do every 15 minutes...
    do{
    $fp = fopen('text3.txt','a');
    fwrite($fp,'test');
    fclose($fp);
    sleep($interval); // wait 15 minutes
    }while(true);
    ?>

    首先运行该程序,然后关闭该页面,程序仍然运行中,test会每隔30秒的填补到text3.txt文件。

    个人感觉PHP定时执行任务的效率不是很高,建议关于定时执行任务的工作还是交给shell来做吧,比较那才是王道

    php入门到就业线上直播课:查看学习

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    Linux系统运维及项目正式上线:点击学习

    专题推荐:php nbsp quot Crontab interval
    上一篇:php 中session的用法总结 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• PHP实现301跳转,及延时跳转代码• php 列出目录与删除目录实例代码• php 模拟用户抓取网页内容程序• 高亮显示搜索结果代码• php入门教程-留言板程序
    1/1

    PHP中文网