我想這樣做:AJAX的jQuery - 後CSV文件到PHP一行在同一時間
- 用戶加載一個CSV文件
- 它讀取一個
- PHP中的數據的一個做加工,它需要相當長一段時間
- PHP進入過程到mysql
問題是:
- csv文件太大,所以php達到了30秒的時間限制。
- 處理後的數據應該按順序逐個輸入到sql
- 只運行php,與mysql的連接跟不上,到目前爲止我需要將csv分開爲每個文件30行,所以它可以正確輸入到mysql。
我想用jQuery結合:
- jQuery的讀取文件
- jQuery的停頓每CSV行1秒
- jQuery是客戶端,所以它不會有時間限制
- jquery然後調用PHP,然後將發送到MySQL
我被卡在j查詢,因爲它以非有序的方式以csv發送數據。
我需要幫助的是在示例1秒的時間間隔內逐個暫停jquery.post。
這是我到目前爲止的代碼。我需要每個帖子的「暫停」效果
<script>
$(function() {
var o1;
var o2;
$.ajaxSetup({cache: false});
$('#load').click(function() {
$.get($('#file').val(), function (content) {
//get the file and convert into single array
o1 = content.split(new RegExp("\n")).map(function (element) {return $.trim(element).toLowerCase();})
//---------------------------------------------------------------------------- Display
$("#box").empty();
$.each(o1,
function(i, j){
if (j!=""){
//add the tr
//$("#tbl").append($("<tr id=\"tr-"+i+"\"></tr>"));
//split again
o2 = j.split(new RegExp(",|\r")).map(function (element) {return $.trim(element).toLowerCase();});
$.post('test2.php',{jquery:'1' , d:o2[0] , o:o2[1] , h:o2[2] , l:o2[3] , c:o2[4]},function(res){
$("#box").append(res);
});
}//end if
}//end function
);//end each
//---------------------------------------------------------------------------- end of display
});
});
});
</script>
</head>
<body>
<form>
<input id="file" type="file" />
<input type="button" id="load" value="Load CSV" />
</form>
<hr />
<table id="tbl" border="1"><tbody></tbody></table>
<div id="box"></div>
<ol id="list"></ol>
</body>
這是'test2.php'文件內容。這只是我將要做的一個例子,真正的代碼當然更復雜:
if ($_POST){
@$_POST['jquery']!=''?$jquery=$_POST['jquery']:$jquery='';
if ($jquery!=''){
@$_POST['d']!=''?$d=$_POST['d']:$d='';
@$_POST['o']!=''?$o=$_POST['o']:$o='';
@$_POST['h']!=''?$h=$_POST['h']:$h='';
@$_POST['l']!=''?$l=$_POST['l']:$l='';
@$_POST['c']!=''?$c=$_POST['c']:$c='';
echo 'D: '.$d.' - '.$o.' - '.$h.' - '.$l.' - '.$c."<br />\n";
}
}
真的需要幫助。謝謝。
對不起,但讓我更清楚一點:當您嘗試上傳文件時,由於文件太大而導致超時,並且當您嘗試使ajax調用以部分發送文件時,您會得到一個問題是你的mysql比你的客戶端發送給你的jquery調用慢? – bpaulon
不完全。在php + mysql上,我得到php超時,因爲csv文件太大。在jquery上,csv文件不是按順序輸入的,這是必須的。在jQuery中它一次輸入2或3行,某種並行,導致錯誤的數據計數。fyi,其中一個csv文件可能有大約3萬行,每列5列,第1列是日期。 – William