[php] serialize() VS json_encode()

2014. 9. 30. 17:15 from Dev/php

예전에는 거의 serialize()를 많이 사용했던 것 같은데, 요새는 AJAX 가 대세고, 더구나 angularJS처럼 아예 javascript로 app을 만드는 때가 되다 보니 json_encode()를 실무에서도 많이 이용하게 됩니다. json_encode()로 포맷을 잡아 놓으면 데이터 송수신하면서 따로 작업을 할 필요가 없어지게 된 거지요.

퍼포먼스 측면에서도 외국에서 벤치마킹한 결과를 보면 serialize()보다 json_encode()가 1.5~2배 이상 더 빠른 것으로 알려져 있습니다. 

그럼에도 개인적으로 작업을 하다 보면, serialize()가 필요한 이유는 개인적으로 몇가지 있습니다 :

1. 자료를 복원할 때 정확하게 특정 class로 복원해야 하는 경우에는 serialize()가 아직도 더 편리합니다. 물론 단순 class나 array라면 캐스팅해버리면 되긴 하지만요.


2. 서버의 php 버전이 낮은 경우입니다. 사실 이 글을 포스팅하는 이유가 오늘 하루 종일 예전 DB의 레코드를 json_encode 해서 신규 서버 mysql에 넣었다가 다시 이용하는 작업을 하다 짜증하서 쓰게 되었는데요. 특히 PHP 5.2 이전 버전은 json과 관련된 함수들의 기능에 제한이 많습니다. 


3. 이건 별 실효성은 없는 한계이지만, json_decode() 실행시 nested 계단이 127개 이상이면 에러가 발생합니다. json을 이용하는 이유가 직관적이고 사람이 바로 알아보기 편하다는 이유도 있는데.. 127 계단을 만들지는 않겠지요? ㅋㅋ 아마 PHP 개발자들도 그렇게 생각하고 한계를 127개로 한 것 같습니다.


하여튼 대세는 json 이지만, 아직도 serialize()가 더 편한 점도 남아있습니다. 

Posted by banasun :