PHP gzcompress() ve gzuncompress() Fonksiyonları

Ne zaman sıkıştırmaktan bahsetsek, aklımız hep dosyaları sıkıştırmaya gidiyor, mesela ZIP dosyaları gibi. Ancak PHP’de uzun string ifadeleri de sıkıştırmanın bazı yolları var. Bu işlem için ise gzcompress() fonksiyonu kullanılıyor.

gzcompress()

Uzun string ifadeleri sıkıştırmak için kullanılır. Örnek vermek gerekirse;

$string = '1993 yılının Ocak ayında Eskişehir‘de dünyaya gözlerimi açtım. Sakin bir çocukluk geçirdikten sonra gençliğimin bir bölümünü oyunlara harcadım. Daha sonra front-end ile tanıştım ve uzun yıllar (halen) front-end olarak profesyonel çalışmalar yaptım (yapmaktayım). Front-end yanında birde back-end desteğimin olmasını istediğim için çeşitli yazılım dilleri ile bir çok profesyonel yazılım geliştirdim (hala geliştirmekteyim). 1993 yılının Ocak ayında Eskişehir‘de dünyaya gözlerimi açtım. Sakin bir çocukluk geçirdikten sonra gençliğimin bir bölümünü oyunlara harcadım. Daha sonra front-end ile tanıştım ve uzun yıllar (halen) front-end olarak profesyonel çalışmalar yaptım (yapmaktayım). Front-end yanında birde back-end desteğimin olmasını istediğim için çeşitli yazılım dilleri ile bir çok profesyonel yazılım geliştirdim (hala geliştirmekteyim).';
 
$compressed = gzcompress($string);

// Orijinal Boyutu: 935 
echo 'Orijinal Boyutu: '. strlen($string);

// Sıkıştırılmış Boyutu: 311
echo 'Sıkıştırılmış Boyutu: '. strlen($compressed);

gzuncompress()

Bu işlemi geri almak içinse bu fonksiyon kullanılır. Yukarıdaki örneğin devamı olarak şöyle örnek verelim;

$original = gzuncompress($compressed);

// Orijinal Boyutu: 935
echo 'Orijinal Boyutu: '. strlen($original);

PHP serialize() ve unserialize() Fonksiyonları

PHP’de hiç kompleks bir değişkeni veritabanında ya da dosyalarda saklamak istediniz mi? Örneğin tipi array olan bir değişkeni veritabanında saklamak istiyoruz. İşte bunu serialize() fonksiyonu ile yapmamız mümkün.

serialize()

Şimdi kompleks bir dizimizi saklayacak hale getirelim.

$arr = [
	'Tayfun Erbilen',
	'site' => 'http://erbilen.net',
	1993,
	[
		'ad' => 'Tayfun',
		'soyad' => 'Erbilen'
	]
];

$data = serialize($arr);
echo $data;

/*
a:4:{i:0;s:14:"Tayfun Erbilen";s:4:"site";s:18:"http://erbilen.net";i:1;i:1993;i:2;a:2:{s:2:"ad";s:6:"Tayfun";s:5:"soyad";s:7:"Erbilen";}}
*/

unserialize()

Serialize ettiğimiz datayı tekrar eski orijinal haline getirmek istersekte şöyle yapacağız;

$arr = [
 'Tayfun Erbilen',
 'site' => 'http://erbilen.net',
 1993,
 [
 'ad' => 'Tayfun',
 'soyad' => 'Erbilen'
 ]
];

$data = serialize($arr);
echo $data;

/*
a:4:{i:0;s:14:"Tayfun Erbilen";s:4:"site";s:18:"http://erbilen.net";i:1;i:1993;i:2;a:2:{s:2:"ad";s:6:"Tayfun";s:5:"soyad";s:7:"Erbilen";}}
*/

$array = unserialize($data);
print_r($array);

/*
(
    [0] => Tayfun Erbilen
    [site] => http://erbilen.net
    [1] => 1993
    [2] => Array
         (
             [ad] => Tayfun
             [soyad] => Erbilen
         )
)
*/

İşte bu şekilde kompleks verilerinizi veritabanında saklayabilirsiniz.

Bu işlemi ayrıca json_encode() ve json_decode() fonksiyonları ilede yapabilirsiniz. Merak edenler buraya tıklayıp inceleyebilir.

PHP glob() Fonksiyonu

PHP’de sevdiğim ve yararlandığım bir fonksiyon var. Bu fonksiyonun adı glob() 

Fonksiyon ne işe yarıyor?

Dizin içerisinde eşleşen dosyaları bulmamızı sağlıyor. Örneğin kolayca tüm php dosyalarını bulabiliriz. Şöyle ki;

// Dizindeki tüm php dosyalarını bul
$files = glob('*.php');

print_r($files);
/*
Array
(
    [0] => _index.php
    [1] => ip.php
)
*/

Ya da bir başka örnek, birden fazla uzantılı dosyaları şu şekilde bulabiliriz;

// Dizindeki tüm php ve css dosyalarını bul
$files = glob('*.{php,css}', GLOB_BRACE);

print_r($files);

/*
Array
(
    [0] => _index.php
    [1] => ip.php
    [2] => bitnami.css
    [3] => style.css
)
*/

İsterseniz bulunduğunuz dizini değil, kendiniz dizin ayarlayarakta listeleme yapabilirsiniz. Örneğin;

// animalpedia dizinindeki tüm html dosyalarını bul
$files = glob('animalpedia/*.html');

print_r($files);

/*
Array
(
    [0] => animalpedia/alt.html
    [1] => animalpedia/index2.html
)
*/

Tam dosya adreslerini almak isterseniz array_map() fonksiyonu ile realpath() uygulamak yeterli olacaktır. Şöyle ki;

// animalpedia dizinindeki tüm html dosyalarını bul
$files = glob('animalpedia/*.html');

$files = array_map('realpath', $files);

print_r($files);
/*
Array
(
    [0] => /Applications/XAMPP/xamppfiles/htdocs/animalpedia/alt.html
    [1] => /Applications/XAMPP/xamppfiles/htdocs/animalpedia/index2.html
)
*/

İşte bu kadar 🙂

Sonuç olarak bu fonksiyonu kullanacağınız bir çok yer olacağına eminim. Bilmiyorsanız öğrendiniz, biliyorsanız pekiştirdiniz. Bir başka fonksiyon anlatımında görüşürüz ^^