[英]Apache Crash on session start in for(;;) loop (long polling)
代碼:
<?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,則代碼會一次又一次地無限嘗試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.