我正在开发一个功能,可以将CSV文件中的数据导入网站。 (用户,产品等。),但是,某些CSV文件太大,例如具有15000+行的产品的CSV文件,我要做的就是将每一行放入数组中,而不是从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>
答案 0 :(得分:0)
如果ob_end_clean()之前有HTML,则应改为调用ob_end_flush()。 ob_end_clean丢弃所有输出,因此直到该点为止的所有HTML都将丢失。
此外,如果代码中</div>
之后有HTML,则在导入完成之前将不发送HTML,这也可能会破坏您的布局。