2012-04-04 46 views
2

試圖尋找這個,雖然我甚至不知道我在尋找什麼。我的問題是這樣的:jQuery .load裏面。每個

$.getJSON('process.countfiles.php?action=getfiles', function(data) { 
    $.each(data, function(name, value){ 
     $("#displayfile").load("process.files.php?file="+value, function(){ 
     }); 
    }); 
}); 

OK,我有2個功能,1腳本(process.countfiles.php) - 統計中的文件和.dat文件建立一個文件列表。然後編號2打開.dat文件並單獨處理文件。

第一部分的偉大工程,讓我們轉移到第二部分,我還從PHP傳遞這樣的數據:

PHP代碼:

$fh = fopen($dirdatafn, "r"); 
    while (!feof($fh)){ 
     $data_file_line[] .= fgets($fh); 
    } 
    @fclose ($fh); 
    echo json_encode($data_file_line); 

現在又回到了JS (jQuery是我爲此使用的框架)數據是PHP中的$ data_file_line數組,它獲取的數據沒有問題,那麼它應該開始將它們分別與每個.each

問題是,它會嘗試同時加載所有7,000+並將它們全部發送到proc ess.files.php,當我希望它一次處理一個。

任何幫助,將不勝感激。

謝謝 傑夫

+0

爲什麼不使用'setTimeout'到時間crawles您數據的功能? – rcdmk 2012-04-04 22:41:48

+1

你還沒有真正描述你想要的行爲。我們按照你的要求調用'process.countfiles.php'並獲取一堆數據,並且這些數據中的一項可以發送到'process.files.php'。你可以用一個來做到這一點。你想要怎樣處理7000個答案?每30秒加載一次?將它們分別加載到網頁上的不同div中?列出所有結果的巨大列表?你想要怎麼處理所有'process.files.php'響應,以及如何讓它們及時分離? – jfriend00 2012-04-04 22:52:51

+0

1.將服務器上的所有文件和目錄一次放入數據文件1行。
2.從數據文件中獲取每一行並調用每個文件並逐行打開以查找關鍵短語。 (例如惡意黑客)
3.處理文件尋找黑客(這不是在這一點的代碼)
4.輸出所有的文件,行號,以及發現包含的代碼行黑客攻擊。
5.允許管理員打開該文件並編輯該行或單擊刪除行或刪除文件(如果該文件是一個完全被黑客入侵的文件,如一個shell或其他東西) – SecureLive 2012-04-05 01:48:34

回答

1

你可以告訴jQuery來使您的通話"process.files.php?file="同步,如果你使用更普遍的$。阿賈克斯()方法,而不是$(「選擇」)的load()。

$.ajax("process.files.php?file="+value, { 
     async: false, // this is true by default 
     success: function(data) { 
      $("#displayfile").html(data); // this is what you were doing by calling $.load 
      // do other stuff 
     } 
    }); 
+0

總體來說,這是有效的,唯一的問題是它將處理速度從32秒@ 7,400個文件減少到了42分鐘@ 7,400個文件。所以我正在重新思考我在這個系統上的戰略。謝謝你的幫助 – SecureLive 2012-04-05 04:18:12

1

爲您提供JSON返回數組,你可以這樣做(我沒有測試過)取代

$("#displayfile").load("process.files.php?file="+value, function(){ 
     }); 

。基本上indiviudally處理每一個文件,你需要等待,直到成功回調火災處理你的下一個文件之前:

var data_arr; 
    $(function() { 
     $.getJSON('process.countfiles.php?action=getfiles', function(data) { 
      data_arr = data; 
      requestFiles(data_arr[0]) 
     }); 
     function requestFiles(i) { 

      $("#displayfile").load("process.files.php?file=" + data_arr[i], function() { 
       if(i < data_arr.length) { 
        requestFiles(i + 1); 
       } 
      }); 
     } 

    }) 
+0

我無法得到完美的工作方式,雖然理論上我在這裏看到你的瘋狂方法......謝謝 – SecureLive 2012-04-05 04:15:42