Apache在for(;;)循环(长轮询)中启动会话时崩溃


Apache Crash on session start in for(;;) loop (long polling)

PHP CODE:

<?php
header('Content-Type: application/json; charset=utf-8');
set_time_limit(0);
clearstatcache();
require 'pdo.php';
if (session_status() == PHP_SESSION_NONE) {
    session_start();
}
$user_id = isset($_SESSION['user_id']) ? (int)$_SESSION['user_id'] : null;
$user_id_token = isset($_SESSION['user_id_token']) ? $_SESSION['user_id_token'] : null;
if (empty($user_id) and empty($user_id_token) and !is_numeric($user_id)) {
    $arr = array();
    $my = array(
        "stats" => "Disconnected"
    );
    $arr[] = $my;
    echo json_encode($arr);
    exit();
}
$stmt0 = $pdo->prepare(code);
$stmt0->execute();
$rows0 = $stmt0->fetch(PDO::FETCH_ASSOC);
$arr = array();
if (!isset($_GET['lastId']) or empty($_GET['lastId'])) {
    $my = array(
        code
    );
    $arr[] = $my;
    echo json_encode($arr);
    exit();
}
for (;;) {
    $lastId = isset($_GET['x']) ? (int)$_GET['x'] : null;
    $stmt1 = $pdo->prepare(code);
    $stmt1->bindParam(code);
    $stmt1->execute();
    $stmt = $pdo->prepare(code);
    $stmt->bindParam(code);
    $stmt->execute();
    if ($stmt->rowCount() > 0) {
        while ($rows = $stmt->fetch(PDO::FETCH_ASSOC)) {
            $my = array(
                code
            );
            $arr[] = $my;
        }
        echo json_encode($arr);
        break;
    }
    else {
        continue;
    }
}
?>    

当代码转到for (;;) {

时发生崩溃

我不知道这里到底发生了什么:

$stmt1 = $pdo->prepare(code);
根据我的理解,这段"代码"在循环的下一步中不会改变。这意味着,如果$stmt->rowCount()第一次返回0,代码将无限次地尝试。