zoukankan      html  css  js  c++  java
  • PHP 后台定时循环刷新某个页面 屏蔽apache意外停止

    PHP 后台定时循环刷新某个页面

    如果间隔时间过长的话  会出现apache自动停止的现象。出现的原因则是设置了

    <IfModule mpm_winnt_module>
    ThreadsPerChild 450
    MaxConnectionsPerChild 3000
    </IfModule>

    错误日志报错

    [mpm_winnt:notice] [pid 126236:tid 316] AH00362: Child: Waiting 270 more seconds for 3 worker threads to finish.

    [mpm_winnt:notice] [pid 126236:tid 316] AH00362: Child: Waiting 240 more seconds for 3 worker threads to finish.

    .......

    [pid 126236:tid 316] AH00363: Child: Terminating 2 threads that failed to exit.

    [pid 126236:tid 316] AH00364: Child: All worker threads have exited.

    然后直接停止了进程 导致循环结束

    //此文件保存在为 sleep.php
    
    //定义一个自动刷新的时间
    $time = 500;
    //定义一个每次请求的最大运行时间
    $time_limit = 200;
    
    ignore_user_abort(True);
    $rest_time=intval($_GET["time"]);
    
    //本PHP访问的URL
    $base_url='http://domain.com/sleep.php';
    
    //自动刷新的页面
    $get_url='http://www.baidu.com';
    
    
    if($rest_time==0)$rest_time=$time;
    
    //延长PHP脚本执行的时间
    set_time_limit(3601);
    
    //加载HttpClient类
    require_once 'HttpClient.php';
    
    //如果时间比较长 需要多次的请求 防止被意外关闭
    if($rest_time>$time_limit){
        //延时
        sleep($time_limit);
        //请求本url
        $rest_time=$rest_time-$time_limit;
        HttpClient::quickGet($base_url.'?time='$rest_time);
        exit();
    }else{
        //延时
        sleep($rest_time);
        HttpClient::quickGet($get_url);
        HttpClient::quickGet($base_url);
    }

    初次写 欢迎指正

    内容由吠品原创/整理/转载,发布在http://www.cnblogs.com/osfipin/,欢迎评论。

  • 相关阅读:
    U8g2库I2C总线再次突破性调试成功
    要学的东西太多了,还想学习opencv
    中断知识
    别人做的扫地机器人,有机会我也想搞一台!
    团队冲刺第五天
    第八周学习进度
    团队冲刺第四天
    构建之法1
    团队冲刺第三天
    团队冲刺第二天
  • 原文地址:https://www.cnblogs.com/osfipin/p/3698986.html
Copyright © 2011-2022 走看看