Tag Archives: jquery

PHP & JQuery ile Comet Programlama

Günümüzün kaçınılmaz programlama tekniği olan comet programlamayla ilgili basit bir anlatım ve örnek olacak.

Comet programlama’nın amacı nedir?

Bildiğiniz gibi PHP ve JQuery ile yapabilecekleriniz sınırlı, çünkü sunucu ile ilişkiniz sayfa yüklendiği anda biter. Chat gibi uygulamalarda sunucuyla sürekli bağlantıya ihtiyaç duyarız, bunu aslında küçük bir hile ile ekstradan hiç bir tool kullanmadan halledeceğiz.

Başlarken…

Amacımız sunucu ile sürekli bağlantı sağlamak, yani bağlantımızı koparmamak. Madem sayfa yüklenmesi bittiği anda sunucu ile bağlantımız kesiliyor, bizde sayfanın yüklenmesini hiç bitirmeyeceğiz Nasıl? Sonsuz döngü ile. 🙂 Comet’teki asıl mantıkta burada. Sürekli bağlığız ne zaman ki yeni bir istek geldi (Mesela chat uygulamasında mesaj gelmesi) o zaman bağlantımızı kopartıyoruz yani sonsuz döngümüz bitiyor ve işlemek istediğimiz veriyi işliyoruz ve hemen ardından tekrar sunucu ile bağlantıda kalacak bir php sayfasını çağırıyoruz. Görüldüğü gibi çok zor değil. Şimdi gelelim Facebook, Gmail vs. gibi siteler bu işi nasıl yapıyor? Tamamen aynı! Şimdi size facebook’unuz açıkken arka planda ne olduğuna dair bir resim göstereceğim;

comet

En aşağıda gördüğünüz istek sürekli çalışıyor, yüklenmesi hiç bitmiyor, az önce anlattığım tekniği uyguluyor yani. Comet programlama ile yapılan örneklerde genelde veritabanı yerine dosyalar kullanılır. Bana göre bu pek gerçekçi bir örnek olmadığı için, size veritabanı ile bu işi nasıl halledeceğiz onu göstereceğim. Öncelikle az önce bahsettiğim sonsuz döngümüzde neler olduğunu bir anlatayım, daha sonra bu örneklerde neden veritabanı kullanılmıyor bunu sizde anlayabileceksiniz. Sonsuz döngümüz her zaman şunun kontrolünü yapar; Ben en güncel veriyi aldığımdan beri bir değişiklik olmuş mu? Şimdi eğerki veritabanı ile bu işi yaparsanız, yani siz en güncel veriyi aldığınızdan beri daha güncel veri gelmiş mi diye kontrol ederken veritabanı kullanırsanız şu olur; Sonsuz döngümüz 10 milisaniyede bir kontrol yapacak (10 ms sınırlamasını biz getireceğiz) 10 ms’de bir, veritabanı kontrolü yapılırsa ne olur? Siz tahmin edin 🙂 Dosya ile uygulanmasının sebebi şudur; En son güncel veriye sahip miyiz değil miyiz diye yaptığımız kontrolü dosyanın son değiştirme tarihine bakarak öğrenilir. Dosyanın son değişme tarihi bizim elimizde olan son değişme tarihinden büyükse daha güncel bir veri gelmiş ve hemen bunu alalım demek oluyor. Veritabanından 10 ms’de bir çekmekten çok daha etkili bir yöntem. Şimdi asıl sorunumuz neymiş? Veri en son ne zaman güncellendi bunun bilgisini sunucuda bir yerde saklamalıyız. Benim çözümüm bellekte tutmak yani; PHP’de memcache kullanmak. Bu yöntem ile dosya ile yapılan uygulamadan çok daha hızlı ve etkili erişebiliriz verimize. Eğerki windows kullanıcı iseniz memcache eklentisini php sunucunuza kurmanız gerekiyor, google’dan destek alabilirsiniz 🙂

Continue reading