在PHP中迭代MASSIVE CSV文件的最佳实践

Wil*_*och 7 php csv

好吧,我会尽量保持这个简短,甜蜜和重点.

我们通过将MASSIVE CSV文件上传到基于PHP的CMS,对我们的系统进行大量的GeoIP更新.这件事通常有超过100k的IP地址信息记录.现在,简单地导入这些数据根本不是问题,但我们必须对当前的区域IP地址映射运行检查.

这意味着我们必须验证数据,比较和拆分重叠的IP地址等.并且必须对每条记录进行这些检查.

不仅如此,我还创建了一个字段映射解决方案,允许其他供应商以不同的格式实现其GeoIP更新.这是通过将规则应用于CSV更新中的IP记录来完成的.

例如,规则可能如下所示:

如果'countryName'=='澳大利亚'然后发送到'澳大利亚IP池'

可能存在多个必须运行的规则,并且每个IP记录必须全部应用它们.例如,根据10条规则检查的100k记录将是100万次迭代; 不好玩.

我们发现100条记录的2条规则最多需要10分钟来处理.我完全清楚这里的瓶颈是成功导入必须发生的剪切迭代量; 只是没有充分意识到我们可能需要加快一些其他选择.

有人建议将文件拆分为服务器端的块.我不认为这是一个可行的解决方案,因为它为已经很复杂的系统增加了另一层复杂性.必须打开,解析和拆分该文件.然后脚本也必须遍历块.

所以,问题是,考虑到我刚刚写的内容,最好的方法是什么才能加快这个过程?不幸的是,升级服务器的硬件JUST对于这个工具不是一个选择,但它们是非常高端的盒子.

不像我想的那么短,但是.HALPS?:(

Som*_*uck 12

在数据库中执行BULK IMPORT(我使用的是SQL Server).BULK IMPORT确实需要几秒钟,并且100,000条记录是花生数据库来处理业务规则.我经常在一张超过400万行的桌子上执行类似的数据运算,并且不需要你列出的10分钟.

编辑:我应该指出,是的,我不建议PHP为此.你正在处理原始数据,使用DATABASE ..:P