Ben bu siteye yeni am, bu yüzden gerçekten benim soru ile ilgili tüm gerekli bilgileri sağlamak umuyoruz.
Ben uzun yoklama kullanarak bir "yeni bir mesaj geldi bildirim" oluşturmak için çalışıyorum. Şu anda benim sitedeki her sayfanın window.onLoad
olayı tarafından Yoklama isteğini başlatan duyuyorum.
Sunucu tarafında ben sonsuz bir döngü var:
while(1){
if(NewMessageArrived($current_user))break;
sleep(10);
}
echo $newMessageCount;
İstemci tarafında ben aşağıdaki (basitleştirilmiş) ajax fonksiyonları vardır:
poll_new_messages(){
xmlhttp=GetXmlHttpObject();
//...
xmlhttp.onreadystatechange=got_new_message_count;
//...
xmlhttp.send();
}
got_new_message_count(){
if (xmlhttp.readyState==4){
updateMessageCount(xmlhttp.responseText);
//...
poll_new_messages();
}
}
Sorun her sayfa yük ile, yukarıdaki döngü tekrar başlar olmasıdır. Sonuç sonunda benim sunucu askıda hale birden sonsuz döngüler for each user olduğunu.
* NewMessageArived()
function yeni okunmamış mesajlar için MySQL DB sorgular.
* Php script başında ben $current_user
değerini elde etmek için start_session()
çalıştırın.
Bana bu döngü içindeki time()
bir dosyaya yazarak bu davranışı hata ayıklamak için kolay yüzden ben şu anda bu sitenin tek kullanıcısıyım. Ne görmek dosya daha sık kez 10 saniyeden daha yazılmakta olduğunu, ama sayfa sayfa giderken sadece başlar.
Herhangi bir ek bilgi yardımcı olabilecek varsa bana bildirin lütfen.
Teşekkür ederim.