您好我有一个在PHP 5.6的Ubuntu盒子上运行的大脚本。基本上它将大量数据从旧数据库迁移到新数据库。正如我所期望的那样,我决定使用一些基本规则来自开始:
在CLI中php.ini内存限制设置为-1。
迁移完整表时,行数由100或1000行的块选择,具体取决于列号,因此我不会运行可能返回数百万行的巨大选择请求。
我可以通过引用从函数传递给另一个函数的所有变量都通过引用传递。
我的所有代码都共享同一个组织。 main函数为我想要迁移的每个表调用一个函数。 它们几乎相同,在表格上执行chunked select并对结果进行foreach。 在foreach中,使用行数据作为引用参数调用其他函数。 这是最后一个函数,它只会迁移1行并返回新的id。
我保留在内存中的只是从一些表中将old_table_id存储到new_table_id的数组。但总共不应超过50K记录......
无论如何,脚本越来越大到崩溃的程度,因为盒子没有内存(带有2GB Ram的Ubuntu Vagrant盒子)。
如果有人有分享的经验,我不知道下一步该做什么......