php, postgresql, mysql, javascript

java, jsf, jpa, jasper reports, pardus, linux, freebsd, ubuntu, solaris, damn small server

PHP ve XCache ile resimleri tampona almak

Yorum yapılmadı

Üzerinde bir kaç gündür çalıştığım bir konu hakkında yazacağım.

Öncelikle "XCache ne demek, tampon ne demek ?" diyenler; bu yazıya hazırlık olarak yazdığım, önceki yazımı okusunlar. "PHP nedir ?" diyenlere ise sözüm yok :)

PHP ile resimleri tampona almak beni oldukça yordu. Çünkü PHP ile resimleri birer stringe dönüştürmenin yolunu bulamadım. Onun için zor bir yöntem deniyorum, resimleri önce ekrana basıyorum, sonra ekrandakileri stringe alıyorum.

Tabi bahsettiğimiz resimleri doğrudan dosyadan alabiliyorsak durumlar değişir, ancak resimleri dosyadan aldıktan sonra üzerinde oynama yapıp ekrana basacağız.

Resimleri dosyadan alıp, üzerinde oynayıp sonra yine dosyaya kaydedip, o dosyadan string olarak okuyacaklar ise hiç XCache işine bulaşmasınlar, yaptıklarının astarı yüzünden pahalı olur.

 
ob_start(); // ekrana bilgi buradan itibaren basılmaya başlar.
if (xcache_isset("resim")){ // tamponda "resim" verisi var mı yok mu ?
	$cacheIm = imagecreatefromstring(base64_decode(xcache_get("resim")));  // resmi "resim" isimli tampondan alır oluşturur
	imagejpeg($cacheIm); // resmi ekrana basar
	imagedestroy($cacheIm); // resmi yok eder, ekrana bastığımız için işimiz yok.
	exit(); // programımızın çalışmasını sonlandırır, diğer tarafı else içerisine almadığımız için sonlandırmalıyız.
}
/*
 
Bu kısımda resmimizi oluşturup üzerinde oynamalar yapıyoruz
 
.*/
imagejpeg($new_im); // resmi ekrana basar
xcache_set("resim",base64_encode(ob_get_contents()),10); // ekrana basılanları 10 saniyeliğine "resim" isimli tampona atar
imagedestroy($new_im); // resmi yok eder.
 

ob_get_contents(); fonksiyonu o ana kadar ekrana basılmış olan veriyi string olarak almamıza yarar.



Yorum Yapın