我有一个将 MySQL 数据库导出为 CSV 格式的 PHP 脚本。奇怪的 CSV 格式是第 3 方软件应用程序的要求。它最初工作,但我现在在第 743 行内存不足。我的托管服务有 66MB 的限制。
我的完整代码在这里列出。http://pastebin.com/fi049z4n
有没有使用的替代品array_splice
?谁能帮助我减少内存使用量。可以更改哪些功能?如何释放内存?
我有一个将 MySQL 数据库导出为 CSV 格式的 PHP 脚本。奇怪的 CSV 格式是第 3 方软件应用程序的要求。它最初工作,但我现在在第 743 行内存不足。我的托管服务有 66MB 的限制。
我的完整代码在这里列出。http://pastebin.com/fi049z4n
有没有使用的替代品array_splice
?谁能帮助我减少内存使用量。可以更改哪些功能?如何释放内存?
你必须改变你的CSV
创作策略。相反,如果将整个结果从数据库读取到内存中的数组中,则必须按顺序工作:
CSV
文件(或者可能是缓冲区)这样,脚本的内存消耗不会与结果中的行数成比例增加,而是(或多或少)保持不变。
这可以作为一个未经测试的例子来勾勒这个想法:
while (FALSE!==($row=mysql_fetch_result($res))) {
fwrite ($csv_file."\n", implode(',', $row));
}
增加内存限制和最大执行时间
例如 :
// Change the values to suit you
ini_set("memory_limit","15000M");
ini_set("max-execution_time", "5000");