如何在PHP中进行长时间的批处理?

tar*_*ras 0 php batch-processing

当我需要从上传的CVS文件更新我的db表(大约100000-500000行)时,我有批处理.通常需要20-30分钟,有时甚至更长.

什么是最好的方法?对此有什么好的做法?任何建议将不胜感激

谢谢.

Tom*_*lak 7

从CSV导入500.000行需要30分钟?

您是否考虑过让MySQL做出艰苦的努力?有LOAD DATA INFILE,它支持处理CSV文件:

LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name
  FIELDS TERMINATED BY ',' ENCLOSED BY '"'
  LINES TERMINATED BY '\n';
Run Code Online (Sandbox Code Playgroud)

如果文件的形状不正确,无法直接导入目标表,您可以预先使用PHP进行转换,或者将其加载到"临时"表中,让MySQL处理必要的转换 - 以较快者为准更方便.

作为一个额外选项,似乎有可能通过PHP的机驱动程序(MYSQLND)异步运行MySQL查询.也许你也可以探索这个选项.它将使您能够保持快速的UI性能.