我尝试使用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上运行这个脚本
答案 0 :(得分:1)
看起来你应该自己制定解决方案。这个脚本不合适,因为它一次读取整个文件,然后将整个文件传递给 preg_replace 。这个正则表达式非常复杂,因此需要大量内存来处理这么大的字符串。 您应该read one data line,然后proccess该行并将其写入输出文件。 Open用于读取的输入文件和用于写入的输出文件,因此数据不会被破坏。