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