使用下面的函數我從表中拉行,對它們進行編碼,然後將它們放入csv格式。我想知道是否有更簡單的方法來防止高內存使用。我不想依賴ini_set。我相信內存消耗是由讀取臨時文件並將其壓縮起來造成的。我很樂意能夠擁有64MB的內存限制。有任何想法嗎?謝謝!php內存限制和讀/寫臨時文件
function exportcsv($tables) {
foreach ($tables as $k => $v) {
$fh = fopen("php://temp", 'w');
$sql = mysql_query("SELECT * FROM $v");
while ($row = mysql_fetch_row($sql)) {
$line = array();
foreach ($row as $key => $vv) {
$line[] = base64_encode($vv);
}
fputcsv($fh, $line, chr(9));
}
rewind($fh);
$data = stream_get_contents($fh);
$gzdata = gzencode($data, 6);
$fp = fopen('sql/'.$v.'.csv.gz', 'w');
fwrite($fp, $gzdata);
fclose($fp);
fclose($fh);
}
}
完美無瑕。工作得很好,剃掉我第20次嘗試的5秒鐘:) – frustratedtech