mysqli_reap_async_query în PHP

mysqli avansat PHP 5.3+

Preia rezultatul unei interogări trimise asincron cu mysqli_query(..., MYSQLI_ASYNC).

Sintaxă
mysqli_reap_async_query(mysqli $mysql): mysqli_result|bool

Ce face mysqli_reap_async_query

Cu opțiunea MYSQLI_ASYNC, mysqli_query trimite interogarea și se întoarce imediat, fără să aștepte răspunsul. Scriptul poate face altceva între timp. Când răspunsul este gata (afli cu mysqli_poll), îl preiei cu mysqli_reap_async_query.

Interogările asincrone sunt utile când ai mai multe interogări lente pe conexiuni diferite și vrei să ruleze în paralel.

Exemplele de pe această pagină folosesc baza de date magazin, cu tabelul produse (coloanele id INT AUTO_INCREMENT, nume VARCHAR(100) NOT NULL, pret INT și stoc INT) și patru rânduri: Laptop (3200 lei, 5 buc.), Mouse (80 lei, 40 buc.), Monitor (900 lei, 0 buc.) și Tastatură (150 lei, 12 buc.). Comenzile SQL sunt explicate în secțiunea MySQL. Rezultatele au fost scrise pentru MySQL 8, pentru că exemplele au nevoie de un server de baze de date.

Parametri

Parametru Descriere
$mysql Conexiunea pe care a fost trimisă interogarea asincronă.

Ce returnează

Un mysqli_result pentru SELECT, true pentru celelalte comenzi.

Exemple

Exemplul 1: Interogare lentă în fundal

<?php
$conn = mysqli_connect("localhost", "ana", "parola_ta", "magazin");

mysqli_query($conn, "SELECT SLEEP(1), COUNT(*) FROM produse", MYSQLI_ASYNC);
echo "Interogarea rulează, pregătesc pagina...\n";

$citite = $erori = $respinse = [$conn];
mysqli_poll($citite, $erori, $respinse, 5);

$rezultat = mysqli_reap_async_query($conn);
echo "Produse: " . mysqli_fetch_row($rezultat)[1];

Rezultat (cu un server MySQL și tabelul produse de mai sus)

Interogarea rulează, pregătesc pagina...
Produse: 4

Greșeli frecvente

  • Trimiți două interogări asincrone pe aceeași conexiune. O conexiune poate avea o singură interogare în desfășurare; pentru paralelism ai nevoie de mai multe conexiuni.

Comenzi înrudite

  • mysqli_poll: Așteaptă până când una sau mai multe interogări asincrone au răspuns gata, pe conexiuni diferite.
  • mysqli_query: Trimite o interogare SQL către baza de date. Pentru SELECT returnează un rezultat din care citești rândurile.