php批量上传的最大执行时间问题


php max execution time issue for bulk upload

我的批量上传功能有问题。我正试图在CSV文件中上传16000条记录。下面是我的代码,我使用的是yii框架。但问题是我得到了php的最大执行时间。

这是的样本记录

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

这样的记录有16000条。

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

有一个用户表、自定义字段表和自定义值表。没有数据视图、触发器或过程。

如注释中所述,性能问题的原因是验证和保存。

但是,如果您在此处执行一次性导入,而问题实际上不是性能,而是最长执行时间的问题,则可以尝试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