Var olan sisteminizin yükünü düşürmek istiyorsanız eAccelerator en iyi yöntem diyebilirim. eAccelerator derlenen PHP dosyalarını cache dizinde tutup, tekrar aynı dosyalara istek geldiğinde kodları yeniden derlemek yerine, bu dizindeki derlenmiş kodları httpd ye gönderir.
Yeni bir sisteme başlayacaksanız ve yeterli miktarda ram e ve server a para harcayabiliyorsanız memcached kullanılabilir. Memcached için özetle dağıtık önbellek sistemi diyebiliriz (Distributed Memory Caching System). Memcached’in diğer bir dezavantajı da işin yükünü programcıya bırakmasıdır. Memcached detaylı bir konu olduğu için (WordPress stats eklentisi bile var) daha sonraya bırakıp işimize dönelim.
PHP ile birlikte eAccelerator derlemek için bazı parametreler girmeniz gerekiyor. WHM/cPanel sunucularda bu imkanımız var gibi görünsede CentOS 5.4 üzerinde işe yaramıyor.
Yazinin devami var..
Bir dizinde yüzlerce hatta binlerce dosya olduğunu düşünün. Bu dosyaların içerisinde sahte dosyalarda var. Sahte dosya derken şunu kastettim; “.jpg” uzantılı veya kendi uzantısında fakat gerçekten JPG resmi olmayan dosyalar. Bu dosyalar html, png, gif, doc, txt, mpeg, gibi JPG grafik dosyası hariç diğer tüm dosya türlerini kapsıyor.
Evet geçen gün başıma böyle bir şey geldi. İşte PHP nin yetersiz kaldığı yerlerden biri. O kadar uğraştım fakat PHP de güvenli bir şekilde bunu yapabilecek yöntem bulamadım. Kullanılabilecek function’lar var. shell_exec() kullanılarak halledilebilir fakat madem shell komutu çalıştıracam o zaman neden PHP kullanıyım ki ? Bu komutu PHP ile çalıştırmaktansa komut satırından çalıştırmak daha kolay.
Gelelim bash betiğimizin çalışmasına. Bash hakkında az/çok bilginiz varsa, koda göz atmanız, nasıl çalıştığı hakkında size fikir verecektir.
Aşağıdaki kodu “jpeg” dosya adıyla kayıt edin.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| #!/bin/bash
#
# Author : irfaN - http://irfandurmus.com
# Usage : ./jpeg [dizin]
#
if [ -n "$1" ]
then
if [ -d "$1" ]
then
cd "$1"
else
echo 'Hata : $1 dizin değil'
echo 'Kullanımı : ./jpeg [dizin]'
exit
fi
fi
for dosya in *;
do
if [[ `file $dosya` != *JPEG* ]]; then
rm "$dosya";
echo "Silindi: $dosya"
fi
done |
daha sonra
./jpeg resimlerim
komutunu verdiğinizde resimlerim klasörü içerisinde sadece gerçek jpeg dosyaları kalacak, diğer tüm dosyalar silinecektir. Hangi dosyaların silindiğini ekrana yazacaktır. Eğer “resimlerim” bir dizin değilse size bunu belirtecektir.
Not : Kodu, yedeği olmayan dosyalar üzerinde kullanmayın. Silinen dosyaların geri dönüşümü mümkün olmayabilir. Dosyalarınızın hepsinin tek dizin içerisinde, alt dizin olmadan bulunması gerekiyor. Kontroller eksik. İsterseniz geliştirebilirsiniz. Son olarak her zamanki gibi kullanımdan doğan zararlardan beni sorumlu tutmayın.