Primero, me gustaría agradecer a todos ustedes grandes personas por ser tan útiles para los nuevos programadores.¿Es este el método adecuado para Long Polling (programación Comet)
Tengo una pregunta sobre el sondeo largo. He estudiado algunos artículos sobre técnica de sondeo largo de Comet Programming. El método me parece muy difícil porque a veces también requiere instalar algunos scripts en el servidor.
Ahora he encontrado un ejemplo en largas encuestas. Funciona muy bien, pero no estoy seguro de si es el método adecuado. El script de ejemplo trata de una aplicación similar a un chat. Este script php funciona de la siguiente manera:
- El script php comprueba continuamente el archivo data.txt hasta que se modifique.
- Tan pronto como se modifique el archivo data.txt, el nuevo texto se enviará a la página web.
Aquí está el script php:
<?php
$filename = dirname(__FILE__).'/data.txt';
// store new message in the file
$msg = isset($_GET['msg']) ? $_GET['msg'] : '';
if ($msg != '')
{
file_put_contents($filename,$msg);
die();
}
// infinite loop until the data file is not modified
$lastmodif = isset($_GET['timestamp']) ? $_GET['timestamp'] : 0;
$currentmodif = filemtime($filename);
while ($currentmodif <= $lastmodif) // check if the data file has been modified
{
usleep(500000); // sleep 500ms to unload the CPU
clearstatcache();
$currentmodif = filemtime($filename);
}
// return a json array
$response = array();
$response['msg'] = file_get_contents($filename);
$response['timestamp'] = $currentmodif;
echo json_encode($response);
flush();
?>
no estoy incluyendo el código de página web para mantener el simple pregunta. La página web tiene solo un div que muestra el texto de data.txt cada vez que se cambia.
puntos principales de mi pregunta son:
- ¿Es este método looping el método adecuado a largo sondear el servidor?
- También cuando el servidor está ejecutando
sleep();
¿qué pasará con otras solicitudes simultáneas? - ¿Hay alguna técnica para reducir la carga en el servidor debido a la secuencia de comandos continua larga de sondeo ?
- Si un cliente que comienza esta solicitud larga de sondeo se desconecta, ¿cómo podemos saber y detener la secuencia de comandos para ese cliente desconectado en consecuencia?
me guían amablemente con este problema ... Gracias
Gracias por la respuesta. La demora es en realidad 500 ms, es decir, 0,5 segundos. Tenga en cuenta que tan pronto como el navegador del cliente abra la página, esta secuencia de comandos comenzará a realizar la rutina de verificación y actualización. Si hay para, por ejemplo, 1000 exploradores de clientes se abren al mismo tiempo, el servidor tiene que enviar respuestas a todos ellos continuamente. ¿Cómo podemos verificar el script php si alguno de los clientes está desconectado y detener el script para mantener el script abierto para todos los demás clientes en línea? Explique amablemente –
Todavía estoy esperando su respuesta (ya que parece que solo unas pocas personas saben acerca de las largas encuestas por las que no recibo ninguna otra respuesta). Amablemente comparta su técnica de Longpoll conmigo. Estaría muy agradecido. ¿Cómo podemos verificar el script php si alguno de los clientes está desconectado y detener el script para mantener el script abierto para todos los demás clientes en línea? ¡Por favor ayuda! –
He agregado algunas explicaciones a mi pregunta, amablemente revise que –