Comet polling che consuma CPU

1

Uso il polling comet nell'applicazione Joomla (PHP) su hosting condiviso. Non posso utilizzare né WebSockets né Node.js, poiché potrebbero non essere disponibili sul server del cliente.

Sono riuscito a mantenere solo una richiesta per ridurre lo spazio che occuperà in Apache. Tuttavia, rende ancora molto lento il mio PC. Nel MacBook del mio amico anche MySQL si è bloccato durante l'esecuzione della mia app.

So che PHP e Apache non sono la scelta giusta per le cose in tempo reale, ma non ho scelta.

Come usare il polling Comet senza occupare spazio Apache?

Il ciclo while controlla costantemente i nuovi dati e restituisce al client solo quando ci sono nuovi dati.

while ($currentmodif == $lastmodif) {           
    // sleep 10ms to unload the CPU
    usleep(10000); 
    clearstatcache();
    $currentmodif = $model->totalNoficationComet($userId);//checks new data
}
    
posta 112233 15.09.2016 - 15:20
fonte

1 risposta

1

La chiave è usare un timer sul lato client. Ad esempio:

To receive the chat messages of all users from the database table, a timer function is set for 5 seconds using the following JavaScript command. This will execute get_chat_msg function in 5 seconds interval.

var t = setInterval(function(){get_chat_msg()},5000);

The get_chat_msg is an Ajax based function. It executes chat_recv_ajax.php program to get chat messages from the database table. In the onreadystatechange property, another JavaScript function get_chat_msg_result is connected. While getting back the chat messages from database table, the program control goes to the get_chat_msg_result function.

Riferimenti

risposta data 11.09.2018 - 16:30
fonte

Leggi altre domande sui tag