Php 在后台上传csv文件

Php 在后台上传csv文件,php,csv,cakephp,background,Php,Csv,Cakephp,Background,我正在将一个csv文件上载到服务器。该文件正在读取数据并保存到数据库中,但我的服务器的问题是最长执行时间为180秒。我无法在180秒内上传csv中的所有数据。服务器在180秒后显示为“服务不可用”。所以我决定在后台完成csv上传。我尝试了一些插件,但我得到的错误,如插件找不到和其他一些。我需要一个cakephp中的解决方案。提前谢谢您可以这样延长执行时间 ini_set('max_execution_time', 600); //600 seconds = 10 minutes 将其放在CSV

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

您可以这样延长执行时间

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

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

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

步骤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>

上传页面
身体{
背景:#E3F4FC;
字体:标准14px/30px Helvetica,Arial,无衬线;
颜色:#2b2b;
}
a{
颜色:#8989;
字体大小:14px;
字体大小:粗体;
文字装饰:无;
}
a:悬停{
颜色:#CC0033;
}
h1{
字体:粗体14px Helvetica,Arial,无衬线;
颜色:#CC0033;
}
氢{
字体:粗体14px Helvetica,Arial,无衬线;
颜色:#8989;
}
#容器{
背景:#CCC;
保证金:100像素自动;
宽度:945px;
}
#表格{padding:20px 150px;}
#表单输入{页边距底部:20px;}

在后台上传
不是一件事(除非你指的是ftp)。在后台上传和处理是一件事,但这是一个非常广泛的主题。服务器的最大执行时间仅为180秒。我已经试过了。谢谢你的建议。我的csv文件有7000行。我正在使用api的响应将值保存到数据库中。我想将数据插入后台的新行中。我的csv有7000行。