Ich versuche, asynchrone Abfragen über PHP MySQLi zu verwenden.PHP MySQL Asynchrone Abfragen mit
Der folgende Code wurde vereinfacht, das Original ist zu ausführlich, um hier wegen Klassenabhängigkeiten und all das aufzulisten. Bitte beachten Sie auch, dass der Verweis auf die Verbindung mysqli_handle
bereits eingerichtet wurde.
$query_1 = "SHOW TABLES FROM moxedo";
$query_2 = "CREATE TABLE `moxedo`.`mox_config_n85ad3` (`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT , `group_id` INT(3) UNSIGNED NOT NULL , `is_enabled` INT(1) UNSIGNED NOT NULL , `tag` VARCHAR(255) NOT NULL , `name` VARCHAR(80) NOT NULL , `value` VARCHAR(255) NOT NULL , `description` TEXT NOT NULL , `init_params` TEXT NOT NULL , `datetime_added` DATETIME NOT NULL , `datetime_lastmodified` DATETIME NOT NULL , `timestamp_univ` BIGINT(14) NOT NULL , PRIMARY KEY (`id`)) ENGINE = INNODB
";
$query_3 = "ALTER TABLE `moxedo`.`mox_config_n85ad3` ADD UNIQUE `ix_u_tag_oq` (`tag`)";
$query_4 = "SHOW TABLES FROM moxedo";
if (!$mysqli_stmt_obj = $mysqli_handle->query($query_1))
{
printf("Error: %s\n", $mysqli_handle->error);
}
if (!$mysqli_stmt_obj = $mysqli_handle->query($query_2, MYSQLI_ASYNC))
{
printf("Error: %s\n", $mysqli_handle->error);
}
if (!$mysqli_stmt_obj = $mysqli_handle->query($query_3, MYSQLI_ASYNC))
{
printf("Error: %s\n", $mysqli_handle->error);
}
if (!$mysqli_stmt_obj = $mysqli_handle->query($query_4))
{
printf("Error: %s\n", $mysqli_handle->error);
}
Der Aufruf 1 zur Abfrage geht durch OK. Der Aufruf von Abfrage 2 wird ebenfalls durch OK ausgeführt.
Allerdings bekomme ich "Befehle nicht synchron; Sie können diesen Befehl jetzt nicht ausführen" Fehler, wenn ich versuche, Abfrage 3 und Abfrage 4 auszuführen. Aus meiner Online-Recherche habe ich einige Informationen zur Verwendung von mysqli_free_result
aber Query gefunden 2 und Abfrage 3 geben kein Resultset zurück.
Was muss ich tun, um den asynchronen Anruf richtig abzuschließen, damit ich mehrere Anrufe tätigen kann, ohne diesen Fehler zu bekommen?
Danke Kyle. Sehr geschätzt. Ich bin mir nicht sicher, ob ich das früher herausgefunden habe, aber es wird wahrscheinlich später für mich [und andere hoffentlich] nützlich sein. Prost. –
Danke, @Kyle. Dies ist eine sehr gute Erklärung für dieses Szenario. –