![]() |
1
12
对数据库执行批量导入(我使用的是SQL Server)。批量导入需要几秒钟的时间,10万条记录对于数据库来说简直就是小菜一碟。我经常在一个超过400万行的表上执行类似的数据压缩,而这并不需要您列出的10分钟。 编辑:我应该指出,是的,我不推荐使用PHP。你要处理原始数据,使用数据库。P |
![]() |
2
1
实现这一点的简单方法是尽可能多地将工作从内部循环中移出。 简单地说,你在内部循环中做的任何事情都是“10万次”,所以什么都不做是最好的(但肯定不实际),所以尽可能少做是下一个最好的选择。 例如,如果您有内存,并且对于应用程序来说很实用,那么可以将任何“输出”推迟到主处理之后。如果可行,缓存任何输入数据。这对汇总数据或偶然数据最有效。 理想情况下,保存以读取csv文件,在主处理过程中尽可能少地执行I/O操作。 PHP是否提供对unix mmap工具的任何访问,这通常是读取文件(尤其是大型文件)的最快方式。 另一个考虑是批量插入。例如,将insert语句构建为简单的字符串,并以10行、50行或100行的数据块形式发送到服务器,这很简单。大多数数据库对SQL语句的大小都有一些硬限制(比如64K之类的),所以您需要记住这一点。这将大大减少您到数据库的往返行程。 如果要通过简单的增量创建主键,请执行en mass(1000、10000块,随便什么)。这是另一件可以从内部循环中移除的事情。 当然,对于每一行,您应该一次处理所有的规则,而不是针对每个规则运行记录。 |
![]() |
3
1
10万条记录并不多。对于一个线程来说,10分钟不是一个糟糕的工作处理时间。不管您使用的是PHP还是C,一条直线上要完成的原始工作量大概是10分钟左右。如果您希望它更快,您需要比while循环更复杂的解决方案。 以下是我将如何解决的问题:
|
![]() |
4
0
您可以尝试在命令行php下运行csv导入。它通常提供更快的结果。 |
![]() |
5
0
如果您使用PHP来完成这项工作,那么将解析转换为python,因为它在这方面比PHP快得多,所以这种交换应该可以将处理速度提高75%甚至更多。 如果您使用的是MySQL,那么您也可以使用加载数据内嵌操作符,但我不确定在将数据插入数据库之前是否需要检查数据。 |
![]() |
7
0
我在做类似的事情。
|
![]() |
Jacco · 未能格式化我的日期以在php中正确工作 1 年前 |
![]() |
jay ram · 如何在URL核心php中从API获取JSON? 1 年前 |
|
Ishwarya A · php电子表格在浏览器中显示多张excel 1 年前 |