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

并且有 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 循环内部的数据库 table。

http://sqlfiddle.com/#!9/1a579/3

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

您的性能问题的原因是验证和保存,如评论中所述。

但是如果你在这里做一个一次性导入并且你的问题不是真正的性能而是最大执行时间,你可以试试 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