XAMPP:脚本在离开时不会停止执行(运行后台直到“完成”)

时间:2013-06-13 17:37:25

标签: php xampp

我目前正在开展一个项目。我正在聊天。

我的目标是使用EventSource来节省资源。我之前在我的主机上使用过它们,JavaScriptPHP一切正常。

我目前正在使用XAMPP服务器来构建我的项目。问题是我需要EventSource的脚本在完成之前不会停止执行(在30秒内我得到时间限制错误,就是“完成”)。当我重新加载页面时,它不会停止加载,直到触发30秒限制错误。无论我在哪个页面,我都会遇到这个问题。

我的主机上没有这个,所以我想知道PHP中是否有某种设置可以禁用这种行为。

我的剧本是:

    require "connect.php";
    require "user.php";

    date_default_timezone_set("America/New_York");
    header("Content-Type: text/event-stream\n\n");

    //ini_set('max_execution_time', 1200);

    $wait = 1000;
    $curr = 0;
    $sM = "";
    while (1) {

        $number = $data["number"];
        $query = $mysqli->query("SELECT * FROM(SELECT * FROM `messages` WHERE `to`='$number' OR `from`='$number' ORDER BY `timestamp` DESC) as mess GROUP BY `id`");
        $ql = $query->num_rows;

        if ($ql == 0) {
            echo 'data: null';
            echo "\n\n";
            exit();
        }

        if($curr != $ql){
            while ($rows = $query->fetch_assoc()) {
                $to = $rows["to"];
                $id = $rows["id"];
                $choose = $to == $number ? $rows["from"] : $to;
                $side = $to == $number ? "To You:" : "From You:";
                $sM .= "<div class='messageBox sBox' onclick=\"Connect.messages.load($id, $to)\" data-id='$id'><name>$choose</name><div>$side " . $rows["message"] . "</div>";
                $q = $mysqli->query("SELECT `id` FROM `messages` WHERE `to`='$number' OR `from`='$number' AND `status`='unread' AND `id`='$id'");
                if ($q->num_rows > 0) {
                    $sM .= "<span>" . $q->num_rows . "</span>";
                }   
                $sM .= "</div>";
            }
            echo 'data: '. $sM;
            echo "\n\n";
            $curr = $ql;
        }

        ob_flush();
        flush();
        usleep($wait * 1000);
    }

基本上这个脚本会一直运行,直到达到时间限制(我知道我可以更改)。但是,当您离开脚本时它不会停止,它仍然在后台运行,因此页面在完成之前不会加载。我最初在WAMP服务器上安装了这个项目。我认为这是服务器故障。但是在尝试XAMPP之后,我认为可能有一个选项来改变它的行为。

0 个答案:

没有答案