Bu başlık ve içindeki yorumlar Türkçe dilinde yazılmış. Boardest Türkçe'ye geçiş yapmak ister misiniz?
  1. 0
    Question asked Programming PHP 1 year ago

    Codeigniter Ajax Long Polling Kilitlenme

    d4mncoder
    No title

Anlık olarak yeni mesaj var mı diye veritabanını long pollingle kontrol ediyorum. Çalışıyor fakat ilk ajax gittikten sonra tüm site donuyor. Yeni sekmede açsam bile site açılmıyor. Neden kaynaklanıyor olabilir?

js bu şekilde

(function mesajlariAl(url){
  $.ajax({ url: url, success: function(data){
    //Yazdır
    $('#mesaj_liste').append(data.mesajlar);
  }, dataType: "json", complete: mesajlariAl, timeout: 30000 });
})();

Codeigniter'da controller bu şekilde

set_time_limit(0);

while(true){
$mesajVarMi = $this->mesaj_model->yeniVarMi($kullanici_id);
    if($mesajVarMi){
        $data['durum'] = 1;
        $data['mesajlar'] = $this->mesaj_model->yeniMesajlariGetir($kullanici_id);
        
        echo json_encode($data);
        
        break;
    }else{
        sleep( 1 );
        continue;
    }    
}
1 reply
  1. 1
    Emre Özdemir
    No title · 1 year ago

    PHP script çalıştırılırken session dosyalarını kilitliyor. Long Polling yaptığınız sırada dosyanın işlenme süresi uzun olduğundan session dosyaları kilitli kalıyor ve diğer istekler sırasını bekliyor mecburen.

    Çözümü ise çok basit set_time_limit()'ten sonra şunu eklerseniz düzelecektir.

    session_write_close();