Avevo già una domanda in proposito, ma ovviamente non è stata accettata molto bene, apparentemente troppo a lungo quando sono effettivamente più informazioni, quindi potresti darmi una risposta migliore.
Ok, sarò molto più chiaro ora. La migliore logica possibile per sviluppare una chat scalabile in termini di stabilità, memorizzazione / lettura dei messaggi sulla chat, aggiornamento della chat sul nuovo messaggio per tutti gli utenti, ecc.? Ho sviluppato la maggior parte di questo, la logica che penso mi manchi è - > controlla se c'è un nuovo messaggio e mostralo a tutti gli utenti. Ho implementato questo, ma si blocca il sito a causa del suo traffico di 300k-400k persone, quindi questa è la mia domanda principale.
La chat è basata su PHP e utilizza Pusher (www.pusher.com) per l'instant messaging, ma manca di quello che mi serve perché è più simile a un websocket.
Sto usando file hardcoded per mantenere i messaggi (voglio evitare il database il più possibile). È un tipo di estensione senza file, sono sicuro che lo sai. Sto andando in crash con
$fp = fopen(..., "w"); // pretend ... is the path and filename
fwrite($fp, $msg); //hardcode the message
fclose($fp);
dove $msg
è il messaggio stesso. Sto avendo 1 file per messaggio. Mostro gli ultimi 150 messaggi = 150 accessi ai file e letture, sì è troppo suppongo. Ora ho una logica migliore che sto perseguendo e cioè 1 file con gli ultimi 50-100 messaggi in ogni momento. Certo dovrebbe essere molto meglio.
Come fa crash, questa è la parte più difficile perché tutto sembra ordinario, credimi è difficile determinare cosa blocca esattamente il sito, ma in circa 5 minuti quando provo ad aprire il sito non c'è più, quindi metto il vecchio contenuto senza chat ed è di nuovo online.
Sto facendo jquery post ogni 1 secondo per verificare se c'è un nuovo messaggio. Sto usando il timestamp in un file speciale dove tengo il tempo dell'ultimo messaggio inviato e if ((time() - time in file) <= 2)
= ricarica gli ultimi 150 messaggi incluso l'ultimo. Troppa input / output, scrivere / leggere o comunque dirlo credo sia ciò che blocca il sito.