还有人在AWS上玩过MapReduce吗?有什么想法吗?如何实施?
当我对大约 60,000 条记录的用户表执行以下代码时:
mysql_connect("localhost", "root", "");
mysql_select_db("test");
$result = mysql_query("select * from users");
while ($row = mysql_fetch_object($result)) {
echo(convert(memory_get_usage(true))."\n");
}
function convert($size) {
$unit=array('b','kb','mb','gb','tb','pb');
return @round($size/pow(1024,($i=floor(log($size,1024)))),2).' '.$unit[$i];
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 32 bytes)
Run Code Online (Sandbox Code Playgroud)
关于如何避免脚本在每次循环时占用额外的内存有什么想法吗?在我的实际代码中,我尝试为大型数据集提供 CSV 下载,并进行一些 PHP 预处理。
请不要建议增加 PHP 的内存限制——这是一个坏主意,更重要的是,仍然会增加使用此技术可以处理的数据集的大小。