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.

Yazar: Tayfun Erbilen

2009'dan beri web işleriyle uğraşan, aynı zamanda amatör müziklede ilgilenen sıradan birisi..

“PHP serialize() ve unserialize() Fonksiyonları” için 3 yorum

  1. Sanırım WordPress’in verileri saklama biçimi de böyleydi. Bunun nedeni sadece complex verilerin oluşu mu?

  2. Merhaba, PHP de yer alan serialize ve unserialize fonksiyonlarını daha önceleri veritabanında yer alan wordpress verilerini incelerken karşıma çıkan verinin türünün araştırınca gördüm. Soruma gelecek olursak acaba veritabanın da uzun array verilerini nasıl tutsak daha sağlıklı olur json ile mi yoksa serialize fonksiyonu ile mi ? Uzun verileri işlerken arada performans farklı olur mu?

    1. Aslında hangisini kullanacağını seçmeden önce farklarını anlamak gerekir. Bir kere objeleri mutlaka serialize ederek tutmak gerek. Performansa bakacak olursakta bunu ancak büyük verilerde anlayabiliriz. Bir örnek bulup test ettim;
      https://gist.github.com/oomlaut/5640673
      Test sonuçları ise şöyle;

      JSON encoded in 1.51670789719 seconds
      PHP serialized in 1.80290603638 seconds
      json_encode() was roughly 18.87% faster than serialize()

      Yani bu mantıkta dizilerde json ile saklamak, objelerde serialize ederek saklamak en doğrusu.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.