मैं यह कहने का साहस करूंगा कि समस्या wait_timeout
. के साथ है . यह मेरे साझा होस्ट पर 30 सेकंड पर सेट है और मेरे लोकलहोस्ट पर 28800 के लिए सेट है।
मैंने पाया कि मैं इसे सत्र के लिए बदल सकता हूं, ताकि आप क्वेरी जारी कर सकें:SET session wait_timeout=28800
अपडेट करें ओपी ने निर्धारित किया कि उसे वेरिएबल interactive_timeout
. को भी बदलने की जरूरत है भी। यह सभी के लिए आवश्यक हो भी सकता है और नहीं भी।
नीचे दिया गया कोड परिवर्तन से पहले और बाद की सेटिंग को यह सत्यापित करने के लिए दिखाता है कि इसे बदल दिया गया है।
इसलिए, अपनी क्वेरी की शुरुआत में प्रतीक्षा_टाइमआउट =28800 (और इंटरेक्टिव_टाइमआउट =28800) सेट करें और देखें कि क्या यह पूरा होता है।
DB_SERVER, DB_USER, DB_PASS, DB_NAME
के स्थान पर अपना स्वयं का db क्रेडेंशियल डालना याद रखें
अपडेट करें साथ ही, अगर यह काम करता है, तो आप प्रतीक्षा_टाइमआउट उच्च सेट करके आप जो कर रहे हैं उस पर स्पष्ट होना चाहते हैं। इसे 28800 पर सेट करना 8 घंटे है और यह बहुत है।
निम्नलिखित इस साइट से है। . यह Wait_timeout को 300 पर सेट करने की अनुशंसा करता है - जिसे मैं कोशिश करूंगा और अपने परिणामों के साथ वापस रिपोर्ट करूंगा (कुछ हफ्तों के बाद)।
<?php
$db = new db();
$results = $db->query("SHOW VARIABLES LIKE '%timeout%'", TRUE);
echo "<pre>";
var_dump($results);
echo "</pre>";
$results = $db->query("SET session wait_timeout=28800", FALSE);
// UPDATE - this is also needed
$results = $db->query("SET session interactive_timeout=28800", FALSE);
$results = $db->query("SHOW VARIABLES LIKE '%timeout%'", TRUE);
echo "<pre>";
var_dump($results);
echo "</pre>";
class db {
public $mysqli;
public function __construct() {
$this->mysqli = new mysqli(DB_SERVER, DB_USER, DB_PASS, DB_NAME);
if (mysqli_connect_errno()) {
exit();
}
}
public function __destruct() {
$this->disconnect();
unset($this->mysqli);
}
public function disconnect() {
$this->mysqli->close();
}
function query($q, $resultset) {
/* create a prepared statement */
if (!($stmt = $this->mysqli->prepare($q))) {
echo("Sql Error: " . $q . ' Sql error #: ' . $this->mysqli->errno . ' - ' . $this->mysqli->error);
return false;
}
/* execute query */
$stmt->execute();
if ($stmt->errno) {
echo("Sql Error: " . $q . ' Sql error #: ' . $stmt->errno . ' - ' . $stmt->error);
return false;
}
if ($resultset) {
$result = $stmt->get_result();
for ($set = array(); $row = $result->fetch_assoc();) {
$set[] = $row;
}
$stmt->close();
return $set;
}
}
}