我的批量上传功能存在问题。我想在CSV文件中上传16000条记录。下面是我的代码,我正在使用yii框架。但问题是我得到了php max执行时间。
这是一个样本记录
Gella,Rafalla,N/A,N/A,0 Pala da vences,13140,MIRAMAS,1,1926-04-25,N/A,LE TRNT BAT I 13,N/A,CEJEAN GINO,6,N/A,N/A,N/A,N/A
并且有16 000条记录。
if (($handle = fopen($file, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
// save the record after few validation.
}
}
正如您所看到的,我一眼就能浏览整个文件。我能知道这里有什么问题可以获得最大执行时间错误吗?
截至目前,处理2000条记录需要6分钟。因此,通过保存记录,我将大约48分钟完成此文件上传。
感谢任何以更好的方式撰写的建议。
这是完整的逻辑。把它保存在这里太久了。 https://3v4l.org/QZeg2
这是我用来检查while循环内部的数据库表。
http://sqlfiddle.com/#!9/1a579/3
有一个用户表,自定义字段表和自定义值表。没有数据视图或触发器或过程。
答案 0 :(得分:1)
您的性能问题的原因是验证和保存,如评论中所述。
但如果你在这里进行一次性导入而你的问题不是性能而是最长执行时间,你可以试试CLI。
如果你的代码已经在yii中,你可以用它制作一个yii控制台应用程序:
Yii 1.1: http://www.yiiframework.com/doc/guide/1.1/en/topics.console
Yii 2: http://www.yiiframework.com/doc-2.0/guide-tutorial-console.html