PHP ile veri cache (önbellekleme) işlemi

Cache (önbellek) gerçekleştirilen bir işlem sonucunun daha hızlı, daha zahmetsiz erişilebilecek bir yere kaydedilmesidir. Kaydedilen veriler belirli bir süre kullanılabilir olup, süre dolduğunda güncellenirler. Örnek ile açıklayacak olursak…

Düzenleme yaptığım bir e-ticaret sitesinde fiyatlar Euro cinsinden girilmiş. Fiyatların bulunduğu sayfalar her açıldığında PHP dosyası TCMB’nın sitesine bağlanıp döviz kurlarını alarak Euro cinsinden olan fiyatı Türk Lirası’na çeviriyordu.

Tahmin edebileceğiniz gibi sayfa her yenilendiğinde bir web sayfasını çağırmak da sunucu performansını oldukça düşüren bir işlemdi. Sadece bu da değil, eğer ziyaretçi sayımız fazla olursa TCMB’nın sunucuları saldırı yaptığımızı sanarak ip’mizi de engelleyebilirdi. İşte burada imdadıma cache sistemi yetişti…

Bu işlem için yazımın altında bulunan basit cache sınıfını hazırladım. Bu cache sistemi eğer 24 saatlik süre doldu ise TCMB üzerinden kurları çekip “kurlar.txt” adı ile yerel sunucuya kaydediyor, eğer süre dolmadı ise “kurlar.txt” dosyasında bulunan içeriği çıktı olarak veriyor. Üzerinde basit değişiklikler yaparak kur dışındaki işlemler için de kullanabilirsiniz.

Önemli Not: “kurlar.txt” dosyasını oluşturup chmod değerini 777 verdikten sonra ilk test için $cache_suresi değişkenini 0 olarak ayarlayın. Eğer 0 olarak ayarlamazsanız dosyanın oluşturulma tarihinden $cache_suresi sonrasına kadar “kurlar.txt” nin içi boş kalacaktır.

<?php
# önbellek süresi (saniye cinsinden)
# ilk çalıştırmada 0 yapın!
$cache_suresi           = 43200;
 
class onbellek{
    public $dadi    = 'kurlar.txt';
    # eğer önbellek süresi doldu ise yapılacak işlemler. (Örn: Veritabanından şu veriyi çek)
    function veri(){
        $sayfa      = file_get_contents('http://www.tcmb.gov.tr/kurlar/today.xml');
        preg_match('~CurrencyCode="USD".*BanknoteSelling>([0-9.]+)</BanknoteSelling~isuU',$sayfa,$cikti);
        $kur        = $cikti[1];
         
        return ($kur);
    }
    function cache($dosyaadi=null){
        if(!@$dosyaadi)
            $dosyaadi   = $this->dadi;
        global $cache_suresi;
        if(filemtime($dosyaadi)+$cache_suresi<time()){ $veri = $this->veri();

            # eğer tcmb'den veri çekemezse, döviz kurunu güncelleme
            if((int)($veri)>0.1){
                $dosya = fopen($dosyaadi, 'w');
                fwrite($dosya, $veri);
                fclose($dosya);
                return $veri;
            } else
                return $this->oku($dosyaadi);
            
        }else{
            return $this->oku($dosyaadi);
        }
    }
    function oku($dosyaadi){
        $dosya  = fopen($dosyaadi, 'r');
        $icerik = fread($dosya, filesize($dosyaadi));
        fclose($dosya);
        return $icerik;
    }
}

$onbellek      = new onbellek();
# kurlar.txt dosyasının chmod ayarını 777 yapmayı unutmayın!
echo $onbellek->cache('kurlar.txt');
?>

PHP ile localhostta RAR işlemleri

php-rar-eklentisi

Bugün projelerimden birisinde RAR ve ZIP dosyalarını internetten tek tek indirip PHP yardımı ile belirli bir dizine çıkardıktan sonra içine birkaç dosya ekleyip toplu halde tekrar arşivle yapmam gerekiyordu. Projeye başlarken benim tahminim gerçek kullanıcılar dışında bot yazılımlarının dosyalara erişememesi için güvenlik önlemi alınmış olacağından, en fazla dosya indirirken sıkıntı çekeceğim yönündeydi.

Fakat evdeki hesap çarşıya uymaz ya yine öyle oldu. Referrer kontrolü gibi bir-iki basit güvenlik önlemi alınmış, onları curl kütüphanesi yardımı ile kolayca aştım. Gelgelelim ki kolayca hallederim diye düşündüğüm RAR işlemlerini yapmak için yazdığım fonksiyon aşağıdaki şekilde bir hata iletisi ile bana dönüş yaptı.

Fatal error:  Call to undefined function rar_open() in D:\xampp\htdocs\dosyam.php on line 5

Okumaya devam et PHP ile localhostta RAR işlemleri

PHP’nin Babası ve Zend’in Sahibi Zeev Suraski Türkiye’ye Gelecek!

Zeev Suraski Üstelik Türkiye’ye tatil yapmak için değil 😀 Golden Horn Ventures’in düzenlediği Web Programcıları etkinliğine geliyor. PHP gibi önemli bir programlama dilinin kurucusu Zeev Suraski ve yine onun kadar önemli bir isim olan Derick Rethans bu etkinlikte konuşmacı olarak yer alacaklar.

Bu etkinlik Nippon Hotel, Taksim’de 24 Ocak 2009 Tarihinde yapılacak, Katılım ücretsiz.

Etkinlik 1 gün sürecek ve 2 kısım şeklinde ilerleyecek. İlk kısımda daha çok teknik bilgiler verilecek iken ikinci kısımda daha sosyal işleri olacak :). Program hakkında genel bilgi verecek olursak şöyle olacak:

Açılış konuşması Zeev Suraski
Kapanış konuşması Derick Rethan
PHP uygulamalarında güvenlik Cumhur Onat
PHP Smarty Framework ile web uygulamaları Özgür Köy
Java Spring Framework ile web uygulamaları Muharrem Taç
3D Flash Engine – Web’de oyun Yogurt Teknolojileri
PHP5 ve SuperGlobals kullanımı Tuncay Bahadır
Freelance yazılım geliştirme ve vergilendirme
Yazılım geliştirme ve fikir haklarının korunması, telifler Ahmet Ayhan Özge
Başarı hikayesi Cumhur Onat
Venture capital ve melek yatırımlar Golden Horn Ventures
İş planı hazırlama Golden Horn Ventures

Program hakkında ayrıntılara buradan ulaşabilirsiniz.