看到一个blog谈到var_export这个函数,于是测试了下和serialize之间的效率对比,结果比我想象还大
$funcs=get_defined_functions();
$t1=microtime(true);
for($i=0;$i<1000;++$i){
file_put_contents('test1.txt',var_export($funcs,true));
eval(file_get_contents('test1.txt').';');
}
$t2=microtime(true);
for($i=0;$i<1000;++$i){
file_put_contents('test2.txt',serialize($funcs));
unserialize(file_get_contents('test2.txt'));
}
$t3=microtime(true);
echo "var_export cost ".($t2-$t1)."\n";
echo "serialize cost ".($t3-$t2)."\n";
//var_export cost 9.58075594902
//serialize cost 3.66198205948
分享到:
相关推荐
`var_export()` 的优点在于它不仅输出数组的值,还输出其键和数据类型,使得输出的代码可以直接在 PHP 环境中运行,从而重构原始数组。然而,需要注意的是,`var_export()` 不适用于复杂的数据结构,如对象,因为它...
它还提供了一个实例化器,该实例化器允许创建和填充对象而无需调用其构造函数或任何其他方法。 使用此组件而serialize()或是性能:多亏了OPcache,所产生的代码比使用unserialize()或igbinary_unserialize()显着更...
本文将详细介绍三种常见的PHP方法,用于将数组或对象写入文件:serialize、print_r和var_export。 1. **serialize方法** `serialize` 函数是 PHP 中用于序列化变量的内置函数,它可以把数组或对象转换为字符串,以...
本文将详细讲解PHP中实现序列化和反序列化的多种方法,包括serialize和unserialize、json_encode和json_decode、var_export和eval以及wddx_serialize_value和wddx_deserialize。 1. serialize和unserialize `...
尽管这种方法比上面的`array_iconv`函数更为复杂,但它能更好地处理各种情况,且性能通常优于基于`var_export`和`eval`的方法。 总的来说,在PHP中进行GBK到UTF-8的数组编码转换,需要根据实际项目的需求和性能要求...
JSON格式通常比Serialize/Unserialize返回的数据更小,序列化和反序列化的速度也更快。JSON格式是开放的、可移植的,可被其他编程语言轻松地处理。 3. Var_export和Eval函数 Var_export和Eval是PHP中用于序列化和反...
在处理数组,尤其是多维数组时,var_export()和print_r()都提供了便利的方法来将其转换成字符串。不过,需要注意的是,这两种方法生成的字符串可能包含大量的数组声明和引号,这在日志文件中可能会降低可读性。因此...
`serialize`和`unserialize`适合PHP内部使用,`json_encode`和`json_decode`则更适合跨语言的数据交换,而`var_export`和`eval`以及`wddx_serialize_value`和`wddx_deserialize`在特定情况下有其优势。选择哪种方法...
5. **json_encode 与 var_export 和 serialize 的区别** - `var_export` 是 PHP 内置函数,用于输出或返回一个变量的字符串表示,但它的输出不是标准的交换格式,而是 PHP 代码。 - `serialize` 用于序列化 PHP ...
XSS(跨站脚本)漏洞则利用`print`, `print_r`, `echo`, `sprintf`, `die`, `var_dump`, `var_export`等函数将未经过滤的用户输入直接输出到页面上。这可能导致攻击者在受害者浏览器中执行恶意脚本,窃取cookie或...
(1)变量 var_export 格式化成PHP正常的赋值书写格式; (2)变量 serialize 序列化之后保存,用的时候反序列化; (3)变量 json_encode格式化之后保存,用的时候json_decode 互联网上测试结果是:serialize格式的...
- **定义与用途**:`__set_state()` 在 `var_export()` 返回对象时被调用;`__autoload()` 在尝试使用尚未定义的类时被调用,用于自动加载类文件。 - **示例**: ```php class MyClass { public function __set_...
当使用`var_export`导出变量时,如果对象实现了`__set_state()` 方法,则该方法会被调用以生成导出结果。 **示例代码:** ```php class MyClass { public function __set_state($properties) { return new self($...
例如,当我们需要在多个请求间保持会话信息,或者处理大批量数据...var_export提供了一种简单的数组文本存储形式,但不推荐用于处理敏感或大量数据,因为其输出的可读文本占用空间较大,并且执行效率不如其他两种方法。
`__set_state`方法在使用`var_export`函数导出对象时调用,它允许自定义对象的输出格式。 `__autoload`魔术方法用于实现自动加载类,当尝试使用一个未被定义的类时,`__autoload`会被调用。这在大型项目中非常有用...