PHP CodeIgniter İle İmage Cache Yapımı

Hemen hemen herkesin ihtiyacıdır diye düşünüyorum. İmage Cache. Genellikle bir tane PROXY URL oluşturup dosyaya ait cache hali varsa onu çekeriz yoksa cache’leyip cache halini çekeriz. Fakat bu durum sistemde dosyalarınızın gelmesini yavaşlatabilir.

Hali hazırsa orjinal dosyalarınızın bulunduğu bir klasör altında image dosyalarınız var ise aşağıdaki paylaşmış olduğum örnekteki gibi bir yöntem ile dosyaların boyutlandırılmasını orantılı bir şekilde yapabilirsiniz.

Bir önceki yazımda “get_dir_contents” fonksiyonunu paylaşmıştım. Bir dizin altındaki tüm dosyaları getirmek için kullanıyoruz.

$list = get_dir_contents( '/var/www/html/cron/orj_images' );

// hangi boyutlarda oluşturacağımızı belirtiyoruz.
$arr[] = array( 32, 32 );
$arr[] = array( 50, 50 );
$arr[] = array( 64, 64 );
$arr[] = array( 70, 70 );
$arr[] = array( 80, 80 );
$arr[] = array( 90, 90 );
$arr[] = array( 100, 100 );
$arr[] = array( 120, 120 );
$arr[] = array( 150, 150 );
$arr[] = array( 160, 200 );
$arr[] = array( 200, 200 );
$arr[] = array( 300, 300 );
$arr[] = array( 200, 256 );
$arr[] = array( 256, 256 );
$arr[] = array( 500, 500 );
$arr[] = array( 512, 512 );
$arr[] = array( 640, 640 );
$arr[] = array( 1024, 1024 );
$i = 0;
// listemizde döngüye girip image_lib kütüphanesi ile işlemleri başlatıyoruz.
foreach( $list as $key => $value )
{
if( !file_exists( $value ) )
continue;
if( is_dir( $value ) )
continue;

$this->load->library( 'image_lib' );
// her bir dosya için boyutlandırma dizisine göre ayrı ayrı işlem yaptırıyoruz.
foreach ( $arr as $k => $v )
{
$ext = pathinfo( $value );

$new_file = $ext[ 'dirname' ].'/'.$ext[ 'filename' ].'-'.$v[ 0 ].'x'.$v[ 1 ].'.'.$ext[ 'extension' ];
$old_file = str_replace( '/var/www/html/cron/orj_images', '/var/www/html/cron/chache_images', $new_file );

if( file_exists( $old_file ) )
continue;
// kaynak dosyamnız $value değişkenindedir.
$config = array(
'image_library' => 'gd2',
'source_image' => $value,
'new_image' => $old_file,
'maintain_ratio' => TRUE,
'create_thumb' => TRUE,
'thumb_marker' => '',
'width' => $v[ 0 ],
'height' => $v[ 1 ]
);

$this->image_lib->initialize( $config );
$this->image_lib->resize();
$this->image_lib->clear();
echo $old_file."\n";
}
}

Yeni dosya ekleme işlemlerinde upload sırasında bu boyutlar otomatik olarak cachleniyor. Sistemde orjinal dosya direkt olarak kullanılmıyor.

Bu kod parçasını CRON üzerinden bağladığımız için dosyaları mümkün olduğunda güncel kalmasını sağlıyoruz.

Not : “Yapı Codeigniter framework’ü üzerinden örneklendirilmiştir. Sisteminize uygulamadan önce test etmenizi tavsiye ederim.”

 

Sublime Text 3 Üzerinde PHP İle PHP Build Etme

Bir önceki yazımda ( Sublime Text 3 Üzerinde Node İle Javascript Build Etme ) Javascript için ufak bir geliştirme yapmıştık. Şimdi ise PHP için yapalım.

Yine Javascript’te olduğu  gibi PHP’de de  CTRL+B komutu ile işlemler yürüyor. Tek fark olarak dosya bazlı Build işlemi gerçekleştiği için tüm script çalışmayabilir.  Framework kullanıyorsanız bahsettiğim gibi sadece o sayfa derlenir Syntax hatası olup olmadığını görebilir.

Fakat PHP öğrenmeye yeni başlayanlar veya ufak tefek kod parçalarını test etmek için gerçekten güzel bir uygulama. Denemenizi tavsiye ederim..

Okumaya devam et “Sublime Text 3 Üzerinde PHP İle PHP Build Etme”

Sublime Text 3 Üzerinde Node İle Javascript Build Etme

Javascript & Node.js ile yazılım hayatımıza heyecan katmaya devam ederken bunları yazmakta kullandığım malum editor Sublime Text 3

ST3 ( Sublime Text 3 ) ile uzaktan geliştirme yaptığım için ( FTP / WINSCP ) genelliklede canlı sistemler üzerinde çalıştığım için javascript tarafında dosyayı upload edene kadar Syntax ( kodlama ) hatalarını gözden kaçırıyoruz. Bunun için nette araştırmalarım sonucu aşağıdaki işlemleri yaptığımızda ST3 üzerinde CTRL + B ile build ederek hızlıca syntax hatalarınızı görüyorsunuz. Hatta development durumundayken yaptığınız console.log işlemlerinizi de hızlıca görmenizi sağlıyor. Tabi ki yeterli değil fakat bir çok olayın / hatanın önüne geçmenizi sağlıyor.. Okumaya devam et “Sublime Text 3 Üzerinde Node İle Javascript Build Etme”