Ich habe den folgenden Code:Looping vorbereitet statments
try
{
if(!($stmt = $conn["DB"]->prepare('CALL `central`.`permissions_edit`(?,?,?,?,?);')))
{
$rtn["Errors"][] = "permissions_edit Prepare failed: (" . $conn["DB"]->errno . ") " . $conn["DB"]->error;
}
else{
foreach ($data as $user => $areas) {
foreach ($areas as $area => $access) {
foreach ($access as $acc => $active) {
if($active != "U")
{
if(!($stmt->bind_param(
'siiis',
$key,
$user,
$area,
$acc,
$active
)))
{
$rtn["Error"][] = "permissions_edit Bind failed: (" . $conn["DB"]->errno . ") " . $conn["DB"]->error;
}
else if(!($stmt->execute()))
{
$rtn["Errors"][] = "permissions_edit Execute failed: (" . $conn["DB"]->errno . ") " . $conn["DB"]->error;
}
else if($res = $stmt->get_result())
{
if ($row = $res->fetch_assoc())
{
if(isset($row["Success"]) && $row["Success"])
{
$rtn["Results"][]= "user=$user areas=$area access=$acc active=$active Message=" . $row["Msg"];
}
else
{
$rtn["Success"] = false;
$rtn["Errors"][]= "user=$user areas=$area access=$acc active=$active Message=" . $row["Msg"];
}
}
}
else
{
$rtn["Errors"][] = "permissions_edit Get failed: (" . $conn["DB"]->errno . ") " . $conn["DB"]->error;
}
}
else
$rtn["Results"][]= "user=$user areas=$area access=$acc active=$active Message=Unchanged";
}
}
}
}
}
catch(Exception $e)
{
$rtn["Errors"][] = "permissions_edit Error(" . $conn["DB"]->errno . "): " . $conn["DB"]->error;
}
diesen Code verwenden, wo die Schleife 1-2 mal wiederholt funktioniert perfekt jedoch diesen Code verwenden, wo die Schleife mehr wiederholt als das Doppelte des POST dazu führt zu PHP ohne Antwort beendet
und erzeugt das folgende in dem MySql log,
2017-03-03T16: 47: 49.284972Z 450 [Note] abgebrochen Verbindung 450 db: 'zentrale' user: 'username' host: 'localhost' (einen Fehler beim Lesen Kommunikationspakete GOT)
2017-03-03T16: 47: 49.582165Z 451 [Note] Abgebrochen Verbindung 451 bis db: ‚zentralen 'user: ‚username‘ host: ‚localhost‘ (haben Sie einen Fehler beim Lesen der Kommunikationspakete)
so die Frage ist, was habe ich falsch gemacht?
Hinweis ich versuchte
$res->free();
$stmt->close();
dies führte dann in
Pakete aus, um hinzuzufügen. Erwartete 1 empfangen 7. Paketgröße = 7
mysqli_stmt :: execute(): MySQL-Server ist weg
mysqli_stmt :: execute(): Fehler beim Lesen der Ergebnismenge Header
von Informationen. php
PHP Version 5.6.27
mysqli
MysqlI Support enabled
Client API library version mysqlnd 5.0.11-dev - 20120503 - $Id: 76b08b24596e12d4553bd41fc93cccd5bac2fe7a $
Active Persistent Links 0
Inactive Persistent Links 0
Active Links 0
Directive Local Value Master Value
mysqli.allow_local_infile On On
mysqli.allow_persistent On On
mysqli.default_host no value no value
mysqli.default_port 3306 3306
mysqli.default_pw no value no value
mysqli.default_socket no value no value
mysqli.default_user no value no value
mysqli.max_links Unlimited Unlimited
mysqli.max_persistent Unlimited Unlimited
mysqli.reconnect Off Off
mysqli.rollback_on_cached_plink Off Off
Ich denke, es gibt zu viele Anfrage gemacht Server anrufen müssen und dass dies verursachen könnte ... von bearbeiten Ich denke, http://StackOverflow.com/Questions/2232150/PDO-MYSQL-Server-Ha-Google-Way-Govern-Away Dieser Thread könnte – RohitS
helfen, wie Sie von den Fehlern sehen können, ist es eine localhost DB mit nur ich benutze es, also dort sollte nur dieser Befehl sein, der gerade auf ihn zugreift und diese sollten sequentiell nicht simultan sein – MikeT
T ja ... aber es gibt einige Lösungen ns innerhalb von thread können Sie versuchen..also versuchen Sie aktivieren Reconnect-Eigenschaft .. – RohitS