我有一个用PHP表示的表:
$Column1 = array();
$Column2 = array();
$Column3 = array();
$Table = array($Column1,$Column2,$Column3);
并序列化$ Table,然后将其保存为二进制文件:
file_put_contents("table.bin",serialize($Table));
毕竟,我需要的是比较这两种情况下从MySQL和序列化数据文件中加载数据的两种方法的性能:
(a)该表只有几行,通过HTTP向网站发出大量网页请求
(b)该表有很多行,还有很多通过HTTP的网站请求
第一种方法,从mysql表加载:
$Result = mysql_query("select * from Table where email='johndoe@example.com'");
$Count = mysql_num_rows();
$Filtered_Rows = array();
for ($Index=0; $Index<$Count; $Index++)
$Rows[$Index] = mysql_fetch_assoc($Result);
var_dump($Filtered_Rows);
第二种方法,从序列化数据文件加载:
$Data = unserialize(file_get_contents("table.bin"));
$Count = count($Data);
$Filtered_Rows = array();
for ($Index=0; $Index<$Count; $Index++)
if ($Data[$Index]["email"]=="johndoe@example.com")
array_push($Filtered_Rows,$Data[$Index]);
var_dump($Filtered_Rows);
假设PHP有足够的内存将整个文件'table.bin'加载到memroy中,哪种方法应该在上述两种情况下提供更好的性能?
我认为第二种方法在尝试“反序列化”时有问题
一张非常大的桌子。