Estoy tratando de usar consultas asincrónicas a través de PHP MySQLi.Consultas asíncronas PHP MySQLi con
El siguiente código se ha simplificado, el código original es demasiado detallado para mostrar aquí debido a las dependencias de clase y todo eso. Además, supongamos que ya se ha configurado la referencia a la conexión mysqli_handle
.
$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);
}
La llamada a Query 1 pasa por OK. La llamada a Query 2 también pasa por OK.
Sin embargo, recibo errores de "Comandos no sincronizados; no se puede ejecutar este comando ahora" cuando intento ejecutar Query 3 y Query 4. De mi investigación en línea encontré información sobre el uso de mysqli_free_result
pero consulta 2 y Consulta 3 no devuelven resultados.
¿Qué debo hacer para finalizar correctamente la llamada asincrónica para que pueda realizar varias llamadas sin obtener este error?
Gracias Kyle. Muy apreciado. No estoy seguro si descubrí esto antes, pero probablemente sea útil para mí [y para otros con suerte] más adelante. Aclamaciones. –
Gracias, @Kyle. Esta es una muy buena explicación de este escenario. –