我正在开发一个将CSV文件中的数据导入网站的功能。 (用户,产品等等),但是,有些CSV文件太大了,比如产品的CSV文件有15000多行,事件我需要做的就是把每一行放在数组中,而不是从CMS调用一个函数到同一个它在数据库中直到需要太长时间,所以即使我在服务器上更改激励时间的页面仍然会在一段时间后显示丢失的争用,所以我决定在每次导入一个产品后显示结果消息。
我有一个名为importedFiles.php的文件,它分析了CSV文件并进行导入。添加以下代码,以便结果显示实时:
set_time_limit(0);
ob_end_clean();
ob_implicit_flush(1);
在我的foreach循环中,我有这个
foreach ($arrays as $p) {
Groups::add($p['groupName'], $p['pfID']);// add function
$rowsUpdated = $rowsUpdated + 1;
echo $p['groupName'] . "::" . "has been added to database" . "<br>";
}
}
在我看来文件Store_bulk_import.php
<form id="import-form" action="" method="post">
<h2>Community Store Bulk Import</h2>
<hr />
<fieldset>
<legend>1. Select a file for update products</legend>
<div class="help-block">Import files must be in CSV format.</div>
<?php
echo $al->file('ccm-b-file', 'fileID', t('Choose File'), $csvFile);
?>
</fieldset>
<br />
<input id="import-submit" type="submit" class="btn btn-primary" value="Import Products" style="" />
</form>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
?>
<div class="container">
<?php
$csvfile = $_POST['fileID'];
echo $controller->csvImport($csvfile) . "<br>";
?>
</div>
如果在ob_end_clean()之前有HTML,则应该调用ob_end_flush()。 ob_end_clean会丢弃所有输出,因此所有HTML都会丢失。
此外,如果代码中的</div>
之后有任何HTML,则在导入完成之前不会发送,这也可能会破坏您的布局。