2017-10-04 61 views
0

我的代碼處理一個包含大約50,000個客戶端的.txt文件,我必須使用MySQL批處理機制將其輸入到表中「LOAD DATA LOCAL INFILE 「(在Sql Server的世界或MongoDb中批量插入)PHP和Ajax:不可能通過Ajax調用執行LOAD DATA LOCAL INFILE(mysql)

我的代碼工作正常,如果我從同一瀏覽器執行它,但如果我使用Ajax調用完成同樣的操作,它會返回」false「,所以我想象apache或PHP安全原因阻止我執行此過程。有誰知道我該怎麼辦?

我的代碼是:

<?php 
header("Access-Control-Allow-Origin: *"); 
header('Access-Control-Allow-Methods: POST, GET, OPTIONS'); 
error_reporting(E_ALL); 
ini_set("display_errors", 1); 

$mysqli = new mysqli('127.0.0.1', 'user_name', 'secret', 'prueba'); 

$file = $_POST["file"]; 

if ($mysqli->connect_errno) { 
    echo "Errno: " . $mysqli->connect_errno . "\n"; 
    echo "Error: " . $mysqli->connect_error . "\n"; 
    exit; 
} 

$sql = "LOAD DATA LOCAL INFILE '/var/www/node/importacion/api/csv_files/{$file}' INTO TABLE cuentas FIELDS TERMINATED BY '|'"; 

try { 
    $resp = $mysqli->query($sql); 
    $mysqli->close(); 
    $respuesta = array(
     "server" => $resp 
    ); 
}catch (Exception $e){ 
    print_r($e->getMessage()); 
} 


echo json_encode($respuesta); 
+0

你檢查 「/無功/網絡/節點/ importacion/API/csv_files/{$文件}」 是該集團MySQL和WWW的數據的? –

+0

我該怎麼做? – Ricky

+0

什麼是Ajax調用?你有3個打印語句。 2錯誤代碼和2以JSON結束。需要看到你的AJAX調用,看看你是如何處理調用和返回 –

回答

1

不是一個答案尚未,但調試。 AJAX期待一個JSON字符串,並且出現錯誤時,您提供的是簡單的TEXT,這可能會導致錯誤並錯過了錯誤消息。

更新你的php:

$respuesta = ''; 
if ($mysqli->connect_errno) { 
    $respuesta .= "Errno: " . $mysqli->connect_errno . "\n"; 
    $respuesta .= "Error: " . $mysqli->connect_error . "\n"; 
    // exit; 
} 

... 
catch (Exception $e){ 
    $respuesta .= 'Exception Error: '.print_r($e->getMessage(),1); 
} 

更新您的AJAX:

$.ajax(
{ 
    data : "file="+archivo, 
    type : "post", 
    dataType: "json", 
    url : "http://localhost/procesarBulk.php", 
    success : function(data){ 
    if(data.server==false){ 
     alert("Hemos tenido problemas para procesar el lote : "+ 
      JSON.stringify(data) 
     ); 
    }else{ 
     alert("Bien, finalizamos todo"); 
    } 
    }, 
    error: function(jqXHR, textStatus, errorThrown) { 
    alert(JSON.stringify({ 
     title: "Connection Error", 
     typeAnimated: true, 
     content: "There was a connection problem with "+this.url+'=> ('+textStatus+'):'+errorThrown+". Please try again"     
    })); 

}); 

看看你會得到什麼額外的信息。

ALSO檢查你的web服務器日誌中的錯誤

+0

感謝您的回覆,我的朋友,我發現我的錯誤的原因。問題是,在創建時我想讀它仍然沒有完成的文件,因爲它不能在繼續的理由的過程。我解決它通過把睡眠(5),儘管這是一個臨時的解決方案,我看可能就是這個原因。非常感謝。 – Ricky