PHP Long Polling Hakkında
-
PHP Long Polling Hakkında bilgisi olanlara bir sorum olacak hocalar. (Onca siyasetin ardından yazılıma geri dönelim :P)
Bilenler bilir malum ben ASP'ciyim :D ASP'ye çeviresim var bu olayı internette kaynak bulamadıgım zaman yaptıgım genel şeydir bu.
Ama mantıgını anlayamadıgım olay usleep. Bu fonksiyon ne işe yarar nasıl bir döngü kurar biri açıklayabilir mi. Mantıgını anlatabilir mi. Ona göre yapılıp yapılamayacagına (kendi sitemde uygulamaya) karar verecegim.?
PHP kodlarını inceledim jquery ile birlikte. Jquery mantıgını anladım zaten şuanki kullandıgım sistemin aynısı.
Tek farkı veri alırkenki (read) dosyası benim kodlarımda her yenilemede yükleniyor birşey varsa 0 kb döngü dönderiyor. Cpu ve ram sorununu bu şekilde aştım.
Fakat long polling daha ilgi çekici geldi :D Bir tek network gürültüsünde php'de yükleme sürekli sürüyor (pending yazıyor benimkindeyse yükleniyor direk). Eger yeni veri gelirse ancak duruyor. Gelmezse yüklenmeye devam ediyor. Bu nasıl bir mantıkla ortaya çıkmış olabilir?
edit: usleep, sleep farketmez. Belirli bir süre betik beklesin sonra devam etsin. bunun mantıgı ne olabilir ki. sonucta bunun da arkaplanda çalıştırdıgı bir function var. -
sleep ile usleep aynı işi yapıyor
sleep saniye cinsinden usleep ise micro saniye cinsinden kalan betiğin çalışmasını geciktiriyor
-
Garip bir olay bi aralar bakmıştım. ASP'de yapmaya çalışmıştım tam olarak çalıştıramıyordum.
PHP ile de pek araştırmadım ama sistem sleep(); üzerine çalışıyorsa yine CPU'da bir yükselme olacaktır.
Amaç while döngüsünün kısır döngü olmasını engellemek için Server'a dinlendirme yapmak sleep(1); //1 saniye bekle.
Bunun jQuery yönü nasıl olacak peki?
Sürekli sayfayı kontrol mü edecek?
Kafam karıştı şimdik.
-
aynen öyle hocam
ajax ile tekrar tekrar girilen son veriler gönderiliyor
-
pSkpt bunu yazdı
Garip bir olay bi aralar bakmıştım. ASP'de yapmaya çalışmıştım tam olarak çalıştıramıyordum.
PHP ile de pek araştırmadım ama sistem sleep(); üzerine çalışıyorsa yine CPU'da bir yükselme olacaktır.
Amaç while döngüsünün kısır döngü olmasını engellemek için Server'a dinlendirme yapmak sleep(1); //1 saniye bekle.
Bunun jQuery yönü nasıl olacak peki?
Sürekli sayfayı kontrol mü edecek?
Kafam karıştı şimdik.
Hocam örnek için http://www.iyibu.org/dosyalar/comet.zip
İndir incele.
Buarada asp ile de bir çözüm buldum tabi. mysql ile fakat benim sistem daha az cpu harcıyor hocam :P
Mantık phpde basit uygulama için kafa patlatmak gerek -benim anladım dilden şöyle: sonsuz bir döngü yapıyorsun. verileri çekiyorsun. bu döngü içinde her veri geldiginde yazdırıyor sonra işleme devam. böylece chrome pending yazısını görüyorsun olay bu en basitinden :D tabi expertler daha iyi tanım yapabilir. fakat aspde gereksiz buldum. tek iyiligini network gürültüsünde daha az yer kaplıyor (her mesaj geldiginde yeni event kaydediliyor, bendeyse her 5 saniyede bir bi event var)
