在后台上传csv文件

时间:2016-06-10 07:46:02

标签: php csv cakephp background

我将一个csv文件上传到服务器。该文件正在读取数据并保存到数据库中但是,我的服务器的问题是最大执行时间是180秒。我无法在180秒内将所有数据上传到csv中。服务器显示为" 服务不可用" 180秒后所以我决定在后台完成 csv上传。我尝试了很少的插件,但我收到的错误就像没有找到插件和其他一些插件。我需要 cakephp中的解决方案。提前致谢

3 个答案:

答案 0 :(得分:0)

我怀疑上传本身需要180秒。您应该重新考虑您的设计并首先收集数据,然后将其写入数据库,如果在cakephp中可用,可以使用批量插入。

答案 1 :(得分:-1)

您可以像这样延长执行时间。

ini_set('max_execution_time', 600); //600 seconds = 10 minutes

将其放在CSV上传脚本的顶部。您可以根据需要更改第二个参数。

答案 2 :(得分:-1)

第1步 - 数据库连接

首先我们需要连接数据库... 文件名:connection.php

<?php
$db = mysql_connect("Database", "username", "password") or die("Could not connect.");

if(!$db) 

    die("no db");

if(!mysql_select_db("Databasename",$db))

    die("No database selected.");
?>

第2步 - 上传页面

通过调用connection.php建立与数据库的连接,清理旧数据表,将新上传的数据插入表中... 文件名:upload.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Upload page</title>
<style type="text/css">
body {
    background: #E3F4FC;
    font: normal 14px/30px Helvetica, Arial, sans-serif;
    color: #2b2b2b;
}
a {
    color:#898989;
    font-size:14px;
    font-weight:bold;
    text-decoration:none;
}
a:hover {
    color:#CC0033;
}

h1 {
    font: bold 14px Helvetica, Arial, sans-serif;
    color: #CC0033;
}
h2 {
    font: bold 14px Helvetica, Arial, sans-serif;
    color: #898989;
}
#container {
    background: #CCC;
    margin: 100px auto;
    width: 945px;
}
#form           {padding: 20px 150px;}
#form input     {margin-bottom: 20px;}
</style>
</head>
<body>
<div id="container">
<div id="form">

<?php

include "connection.php"; //Connect to Database

$deleterecords = "TRUNCATE TABLE tablename"; //empty the table of its current records
mysql_query($deleterecords);

//Upload File
if (isset($_POST['submit'])) {
    if (is_uploaded_file($_FILES['filename']['tmp_name'])) {
        echo "<h1>" . "File ". $_FILES['filename']['name'] ." uploaded successfully." . "</h1>";
        echo "<h2>Displaying contents:</h2>";
        readfile($_FILES['filename']['tmp_name']);
    }

    //Import uploaded file to Database
    $handle = fopen($_FILES['filename']['tmp_name'], "r");

    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $import="INSERT into tablename(item1,item2,item3,item4,item5) values('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]')";

        mysql_query($import) or die(mysql_error());
    }

    fclose($handle);

    print "Import done";

    //view upload form
}else {

    print "Upload new csv by browsing to file and clicking on Upload<br />\n";

    print "<form enctype='multipart/form-data' action='upload.php' method='post'>";

    print "File name to import:<br />\n";

    print "<input size='50' type='file' name='filename'><br />\n";

    print "<input type='submit' name='submit' value='Upload'></form>";

}

?>

</div>
</div>
</body>
</html>