2017-10-04 16 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

は、あなたが "の/ var/www /のノード/ importacion/API/csv_files/{$ファイルを}" にチェックしたエラーのため、Webサーバーのログを確認MySQLとWWW-データのグループ内にありますか? –

+0

どうすればいいですか? – Ricky

+0

Ajaxコールとは何ですか?あなたは3つの印刷ステートメントを持っています。 2エラーコードは2、JSONは2になります。あなたがコールを処理しているかを確認して返すために、あなたのAJAX呼び出しを参照してくださいする必要があり –

答えて

1

まだ答えが、デバッグ。 AJAXJSONの文字列を予期していますが、エラーが発生すると、単純なテキストが表示されてしまい、エラーメッセージが表示されなくなります。

更新して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

+0

おかげで、私の友人、私は、エラーの原因を発見しました。問題は、私はそれがその理由は、プロセスを継続することができないため、それはまだ、作成されて終了しない読み込みたいファイルということです。私はそれが一時的な解決策ですが、私はそれはそれは理由でもらえ参照してください、睡眠(5)を配置することによってそれを解決しました。どうもありがとうございました。 – Ricky

関連する問題