Me enfrento a una situación en la que tengo que buscar y mostrar alrededor de 200,000 filas de una tabla MySql a html. Ahora el problema es que está tomando mucho tiempo si busco todas las filas y las envío al cliente a través de ajax.
Pero estoy pensando en obtener datos en modo de transmisión desde la tabla MySql y también enviarlos al cliente en modo de transmisión.
¿Es posible obtener y enviar datos en modo de transmisión?
Si es así, ¿puede darme un punto de partida desde donde comenzar?
Considere mi ajax como;
$.ajax({ url:"myurl.com", method:"post", data:jsonData, success:function(data){ console.log(data); } })Y el php es como;
$conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $result=$conn->query("select * from tableName"); $ret=Array(); if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { array_push($ret,$row); } } else { echo "0 results"; } echo json_encode($ret);Hasta esto lo he hecho, pero ¿cuáles son los cambios necesarios para hacer las cosas en el modo de transmisión?
Si su intención es enviar varias solicitudes a través de una sola conexión, entonces debe buscar HTTP/2 o HTTP/3. Estos permiten que una conexión se use de un lado a otro, es decir, el cliente se conecta y usted obtiene una conexión bidireccional donde puede enviar y recibir cualquier cantidad de solicitudes. Más específicamente, puede enviar una solicitud para registrarse en su servidor y luego su servidor puede enviar tantos datos como quiera para siempre . Así es como se implementan la mayoría de los sitios web modernos. Aquellos en los que cambias una cosa en un navegador y se actualiza automáticamente en otro... eso es HTTP/2 (TCP) o HTTP/3 (UDP).
Con HTTP/1.1, debe usar una solicitud con todas las consultas que necesita y luego su servidor puede enviar todas las respuestas una tras otra. Digamos que está respondiendo con datos JSON, podría escribir un objeto JSON por línea. Si desea utilizar la función de transmisión de HTTP/1.1 , es factible, pero no muy útil a menos que la respuesta sea bastante grande (como más de 64 Kb).