在MySQL数据库和序列化数组中存储JSON数据的优缺点是什么?
Answers:
serialize
-它保留了正确的序列化对象类型wordpress.stackexchange.com/a/61094/91844
如注释所示,JSON比序列化数组占用更少的空间。我还检查了JSON或序列化是否更快,并且令人惊讶的是,JSON编码比序列化更快。不过,反序列化比JSON解码更快。
这是我用来测试的脚本:
<?php
function runTime(){
$mtime = microtime();
$mtime = explode(' ', $mtime);
$mtime = $mtime[1] + $mtime[0];
return $mtime;
}
?>
<pre>
<?php
$start = runTime();
$ser;
for($i=0; $i<1000; $i++){
$a = array(a => 1, x => 10);
$ser = serialize($a);
}
$total = runTime() - $start;
echo "Serializing 1000 times took \t$total seconds";
?>
<?php
$start = runTime();
$json;
for($i=0; $i<1000; $i++){
$a = array(a => 1, x => 10);
$json = json_encode($a);
}
$total = runTime() - $start;
echo "JSON encoding 1000 times took \t$total seconds";
?>
<?php
$start = runTime();
$ser;
for($i=0; $i<1000; $i++){
$a = unserialize($ser);
}
$total = runTime() - $start;
echo "Unserializing 1000 times took \t$total seconds";
?>
<?php
$start = runTime();
$json;
for($i=0; $i<1000; $i++){
$a = json_decode($json);
}
$total = runTime() - $start;
echo "JSON decoding 1000 times took \t$total seconds";
?>
</pre>
可移植性:JSON优胜者。JSON在更广泛的平台上受支持,而据我所知,PHP仅支持反序列化。尽管可以用任何一种语言解析任何一种格式,但JSON都有更多的预构建库。
未来证明:JSON优胜者。JSON是一种“标准”,就Javascript是一种标准而言,将来不太可能会更改。PHP小组没有对序列化格式的未来做任何保证,尽管将来不太可能更改,但是由一个小组控制该格式的事实意味着您最终可能会得到将来无法读取的数据。
保真度:PHP优胜者。通过PHP序列化,您可以使用本地PHP数据类型存储数据,包括由自定义类定义的对象。JSON仅允许您存储通用原始类型,原始类型列表(“数组”)和键/值对对象。如果您正在开发PHP应用程序,则PHP序列化可能会在此处提供一些优势。
文件大小:JSON在这里略胜一筹,因为PHP当前的序列化格式更加冗长(因为它存储了更多信息)。
绩效:谁知道,这取决于个人资料。
结论:除非有充分的理由要使用PHP序列化,否则请使用JSON。
JSON具有更强的可移植性,即,您可以更轻松地从其他语言等中读取/写入JSON。如果您使用PHP序列化的数组,则只能轻松地使用PHP对其进行访问。
我只是用php serialize这个大问题。我在一个使用反序列化的字段中存储了很多数据读取的。
发生的事情是我在该字段中收到一些损坏的数据。序列化使用“ a”,“ s”和“ N”之类的代码映射数据。如果有损坏的数据,则映射失败。它将显示php错误,因为字节码错误,反序列化功能无法工作。
所以我的意思是避免序列化。使用JSON可以更安全,您不会对未来的专业问题大惊小怪。
对我来说,不再需要序列化了。