programing

PHP에서 직렬화 또는 json을 수행하시겠습니까?

goodjava 2023. 3. 21. 22:06

PHP에서 직렬화 또는 json을 수행하시겠습니까?

따라서 어레이를 PHP로 인코딩하여 MySQL 데이터베이스에 일반 텍스트로 저장해야 합니다.제 질문은 serialize() 또는 json_encode() 중 어느 쪽을 사용해야 할까요?각각의 장점과 단점은 무엇입니까?

이 상황이라면 둘 중 어느 쪽이라도 좋다고 생각합니다.하지만 당신은 어떤 것을 선호하고 그 이유는 무엇입니까?어레이가 아닌 다른 것을 위해서라면?

★★★의 serialize: 이것은 PHP에 한정되어 있습니다.즉, 자신의 클래스의 인스턴스를 포함한 PHP 타입을 나타낼있습니다.데이터의 시리얼화를 해제하면 오브젝트나 클래스의 인스턴스도 돌려받을 수 있습니다.


★★★의 json_encode: JSON은 PHP에 특유하지 않습니다.여러 언어로 읽고 쓸 수 있는 라이브러리가 있습니다.즉, PHP가 아닌 다른 언어로 조작할 수 있는 것을 원하시면 더 좋습니다.

JSON 문자열은 시리얼화된 문자열보다 손으로 읽기/쓰기/수정하기 쉽습니다.

한편, JSON은 PHP에 특화되어 있지 않기 때문에, 데이터 타입 등, PHP에 특화된 것은 인식하지 않습니다.


의 사이드노트로서 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★:

  • 이 두 가지 사이에 약간의 속도 차이가 있더라도 크게 문제가 되지 않습니다.많은 데이터를 시리얼화/비시리얼화하지 않을 수 있습니다.
  • 이것이 데이터를 데이터베이스에 저장하는 가장 좋은 방법이라고 확신하십니까?
    • 된 스트린에 대해 많은 할 수 할 수 .데이터를 사용할 수 없습니다.wherePHP는 PHP를 참조해 주세요.

PHP에서 Json Encoding vs Serialization에 대한 분석을 했습니다.Json은 어레이와 같은 단순하고 단순한 데이터에 가장 적합하다는 것을 알게 되었습니다.

https://www.shozab.com/php-serialization-vs-json-encoding-for-an-array/에서 실험 결과를 확인하십시오.

of의 또 다른 json_encode에 걸쳐서serialize왜 그런지 알아보다가 .memcache사용된 메모리가 너무 커져서 줄일 방법을 찾고 있었습니다.

<?php

$myarray = array();
$myarray["a"]="b";
$serialize=serialize($myarray);
$json=json_encode($myarray);
$serialize_size=strlen($serialize);
$json_size=strlen($json);
var_dump($serialize);
var_dump($json);
echo "Size of serialized array: $serialize_size\n";
echo "Size of json encoded array: $json_size\n";
echo "Serialize is " . round(($serialize_size-$json_size)/$serialize_size*100) . "% bigger\n";

그 결과, 다음과 같습니다.

string(22) "a:1:{s:1:"a";s:1:"b";}"
string(9) "{"a":"b"}"
Size of serialized array: 22
Size of json encoded array: 9
Serialize is 59% bigger

분명히 가장 극단적인 예를 들겠습니다.어레이의 길이가 짧을수록 시리얼라이즈로 인한 오버헤드가 중요해집니다(콘텐츠의 크기에 관계없이 최소 글자수를 사용하는 포맷으로 인해 초기 객체 크기에 비례합니다).실제 가동 Web 사이트에서도, json에 상당하는 어레이보다 20% 큰 시리얼 어레이를 볼 수 있습니다.

우선 어레이나 오브젝트를 시리얼화하여 데이터베이스에 저장하는 것은 일반적으로 코드 냄새입니다.때때로 사람들은 쉼표로 구분된 목록을 열에 넣고 나중에 그들이 그것에 대해 문의해야 한다는 것을 알게 되면 온갖 곤경에 처하게 된다.

그러니까 이런 상황이라면 잘 생각해 보세요.

차이에 대해서요.PHP serialize는 아마도 더 콤팩트하지만 PHP에서만 사용할 수 있습니다.JSON은 크로스 플랫폼이며 인코딩 및 디코딩 속도가 느릴 수 있습니다(의미있는 점은 의심스럽지만).

데이터가 PHP 응용 프로그램을 벗어날 필요가 없다면 serialize()를 권장합니다.이는 오브젝트에 __sleep() 메서드나 __wakeup() 메서드와 같은 많은 추가 기능을 제공하기 때문입니다.또한 개체를 올바른 클래스의 인스턴스로 복원합니다.

시리얼화된 데이터를 다른 응용 프로그램에 전달할 경우 호환성을 위해 JSON 또는 XML을 사용해야 합니다.

하지만 직렬화된 Objet를 데이터베이스에 저장하는 것은 어떨까요?다시 한 번 생각해 보세요.나중에 정말 큰일 날 수도 있어요.

먼저 이러한 테스트에 대해 Shozab Hasan과 사용자 359650에게 감사드립니다.어떤 선택이 최선일까 고민하다가 이제야 알았습니다.

심플한 배열을 인코딩하려면 , PHP와 javascript 양쪽에 대응한 JSON, 또는 다른 언어에도 대응합니다.

PHP 개체를 인코딩하려면 직렬화가 더 좋습니다. PHP 개체는 PHP에서만 불안정하기 때문입니다.

데이터를 저장하려면 인코딩된 데이터를 파일에 저장하거나 표준 형식의 MySQL을 사용합니다.데이터를 복구하는 것이 훨씬 쉬울 것입니다.MySQL은 PHP 처리 없이도 원하는 방식으로 데이터를 가져올 수 있는 뛰어난 기능을 가지고 있습니다.

지금까지 테스트를 해본 적은 없지만 시스템 파일 정렬로 파일을 알파벳/숫자 순서로 되돌릴 수 있다면 파일 저장소가 데이터를 저장하는 가장 좋은 방법이라고 생각합니다.MySQL은 이러한 처리에 욕심이 많고 파일 시스템도 사용합니다.

언급URL : https://stackoverflow.com/questions/2574728/serialize-or-json-in-php