• 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/,欢迎评论。

  • 相关阅读:
    使用 GitHub, Jekyll 打造自己的免费独立博客
    如何解决数据科学计数法在数据库中的显示
    RDF
    C# 在 4.0 以后一共有3种创建线程的方式
    C#多线程
    1、框架概述
    3、IDEA 中使用 Maven
    2、Maven 核心概念
    1、Maven 概述
    JDK动态代理
  • 原文地址:https://www.cnblogs.com/osfipin/p/3698986.html
Copyright © 2020-2023  润新知