RabbitMQ popüler bir mesaj kuyruğu sistemidir. Mesaj kuyruğu yazılımlarının genel çalışma şekli şöyledir; yapılacak işler bir kuyruğa aktarılır ve işi yapacak olan worker’lar sırasıyla kuyruktan iş alıp yaparlar. Uygulama akışı sırasında kullanıcının, tamamlanmasını beklemesine gerek olmayan işleri arka planda gerçekleştirmek ya da bir işi birden fazla worker’a dağıtarak daha kısa sürede tamamlamak gibi işler için kullanılır. Mainstream bir örnek vermek gerekirse; başarılı bir kayıt işleminden sonra kullanıcıya hoşgeldiniz mail’i gönderileceğini varsayalım. Mail gönderme işlemi, bir mail sunucuna bağlanma ya da bir web servis kullanma süreçlerinden geçeceği için zaman alacaktır fakat kullanıcının başarılı kayıt sayfasını görmek için mail gönderiminin tamamlanmasını beklemesine gerek yoktur. O nedenle mail gönderme işlemi bir mesaj kuyruk sistemine yazılır ve bir consumer tarafından gönderim arka planda gerçekleşir.
Continue reading PHP ile RabbitMQ Kullanımı
Category: PHP
Cache Sistemlerinde “Dog-pile Effect” den Korunmak
Standart bir web uygulamasında, cache araçlarını kullanmak basit görünebilir. Bir değerin cache’de var olup olmadğı kontrol edilir, varsa değer alınır, yoksa yeniden üretilip daha sonraki isteklere sunulmak üzere cache’e yazılır. Fakat yüksek trafiğe sahip bir uygulamada, cache süresi bittiğinde aynı anda gelen istekler, cache’lenmiş içeriği eş zamanlı tazelemeye çalışabilirler. Bu da kullandığınız veri kaynağına (veritabanı, web servis vb..) extra yük getirecektir.
Sphinx Filtrelerinde ‘OR’ Koşulu Kullanımı
Sphinx‘de indexlenecek veriye, arama sırasında filtreleme yapmak için özellikler (attributes) tanımlayabiliyoruz. Bu özellikler full-text olarak indexlenmiyor (*), sadece aramayı filtreleme amaçlı kullanılıyor ve arama sonucunda dönen veri setine dahil oluyor.
Continue reading Sphinx Filtrelerinde ‘OR’ Koşulu Kullanımı
Twitter API ile Application-only Access Token Kullanımı
Twitter, kullanıcı hesaplarıyla birebir etkileşim sağlayan API endpoint’ler (örneğin tweet atmayı sağlayan statuses/update
gibi) haricindeki işlemlerde kullanmanız için, Twitter uygulamanıza ait bir access token (bearer token) veriyor. Sadece bu token kullanılarak bir çok API işlemi yapılabilir. Bu sayede api rate limiti artırabiliriz. Örneğin tweet aramasında bir kullanıcaya ait access token ile 15 dakikada 180 api isteği yapabilirken, application token ile 450 istek yapabiliyoruz (limitler).
Aşağıdaki cURL komutu işe application access token’ınızı alabilirsiniz. consumerKey
ve consumerSecret
bilgilerinize uygulama detay sayfasından ulaşabilirsiniz.
Continue reading Twitter API ile Application-only Access Token Kullanımı
GitHub Web Hook ile Deployment
Git hosting olarak Github kullanılan projelerde, Github’a gönderilen her yeni commit’de bir web adresinin tetiklenmesini sağlayabilirsiniz. Service Hooks menüsü altında yer alan WebHook URLs sayfasından, kaynak kodda değişiklik olduğu zaman, önceden tanımlanmış adres(ler)e POST methoduyla, güncelleme bilgilerini içeren JSON-encoded data ile beraber istek gönderilir. Burada örnek içeriğini bulacağınız payload bilgisine bakarak isteğin Github’dan gelip gelmediğini kontrol edebiliriz.
Continue reading GitHub Web Hook ile Deployment