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

标签 php mysql yii bigdata bulkinsert

我的批量上传功能有问题。我正在尝试以 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 循环内检查的数据库表。

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

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

最佳答案

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

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

关于php批量上传的最大执行时间问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33736584/

相关文章:

php - 比较 PHP 和 MYSQL 的日期,strtotime 不起作用

php - 无法从 php 中的 while 循环获取值

php - 使用 array_map 返回实例化对象数组?

php - Yii 检查主页

php - 在特定时间后在 php 中终止函数?

database - 'bouncing' 表的单个 MySQL 查询选择

mysql - 如何使用 GROUP BY 获取 2 个以上字段的最接近时间

php - 使用 PHP 将 MySQL 数据保存到 Excel 工作表

php - 在 Yii2 REST API 中同时使用 JSON 和 JSONP 格式

controller - Yii 从 Controller 获取 url 部分