PHP CLI内存不足

时间:2016-08-24 02:11:25

标签: php memory

我尝试使用https://github.com/Blogestudio/Fix-Serialization/blob/master/fix-serialization.php中的fix-serialization.php文件重新编译1gb sql转储

使用此命令:

php -d memory_limit=-1 fix-serialization.php dump.sql 

但是我收到以下错误

PHP Fatal error:  Out of memory (allocated 2328100864) (tried to allocate 18446744071742389167 bytes) 

我在尝试时遇到同样的错误:

php -d memory_limit=2000M fix-serialization.php dump.sql 

显然我的电脑没有18446744071 GB的内存。我在MBP和我的Ubuntu机器上都出现了这个错误,我试过在php5.6和7上运行这个脚本

1 个答案:

答案 0 :(得分:1)

看起来你应该自己制定解决方案。这个脚本不合适,因为它一次读取整个文件,然后将整个文件传递给 preg_replace 。这个正则表达式非常复杂,因此需要大量内存来处理这么大的字符串。 您应该read one data line,然后proccess该行并将其写入输出文件。 Open用于读取的输入文件和用于写入的输出文件,因此数据不会被破坏。