2013-07-10 74 views
0

基本上,我試圖把一個活飼料在我的網站是推動所有新數據到我的數據庫外部API,從長輪詢PHP中沒有數據

下面是當前HTML代碼我「M用搶我PHP文件,並得到任何新的內容添加到數據庫中

$min_id_result = $DB->select("SELECT `id` FROM `api_media` ORDER BY `id` DESC",true); 
//Basically all this is doing is returning the latest ID in the database 

var Id = "<?=$last_id_result['id'];?>"; 
function waitForPics() { 
    $.ajax({ 
     type: "GET", 
     url: "/ajax.php?id="+Id, 

     async: true, 
     cache: false, 

     success: function(data){ 
      var json = eval('('+ data +')'); 
      var img = json['img']; 
      if(json['img'] != "") { 
       $('<li/>').html('<img src="'+img+'" />').appendTo('#container') 
      } 
      Id = json['id']; 
      setTimeout(waitForPics,1000); 
     }, 
    }); 
} 

$(document).ready(function() { 
    waitForPics(); 
}); 

這裏的ajax.php文件我用處理的數據庫

$min_id_result = $DB->select("SELECT * FROM `api_media` ORDER BY `id` DESC",true); 
$next_min_id = $min_id_result['id']; 

$last_id = $_GET['id']; 

while($next_min_id <= $last_id) { 
    usleep(10000); 
    clearstatcache(); 
} 

$qry_result = $DB->select("SELECT * FROM `api_media` ORDER BY `id` DESC"); 

$response = array(); 
foreach($qry_result as $image) { 
    $response['img'] = $image['image']; 
    $response['id'] = $image['id']; 
} 
echo json_encode($response); 

我遇到的是它的從請求沒有返回數據給我的問題是,它似乎正確的我,但顯然第二個開發者的眼睛出現在次

+1

你永遠不會更新'while'循環中的任何東西,所以它永遠不會給你新的數據。你通常使用'usleep'的while循環來頻繁地檢查信息,在你所做的只是告訴stat緩存清除。 –

+0

你有沒有看過網絡流量(螢火蟲,谷歌瀏覽器工具,ngrep,tcpdump ...)天氣你得到任何迴應? – DanFromGermany

+0

@patrick,這就是我希望它做的,檢查兩個Ids對方是否相同,然後清除CPU緩存等等。如果它們不是,它會跳出while循環並執行文件的其餘部分 – Curtis

回答

0

好這應該工作:

while($next_min_id <= $last_id) { 
    usleep(10000); 
    clearstatcache(); 
    $min_id_result = $DB->select("SELECT * FROM `api_media` ORDER BY `id` DESC",true); 
    $next_min_id = $min_id_result['id']; 
} 

裏面的while你等待一個特定的參數改變,但你需要給它一個改變的機會。

這些變量不會自行更改,您需要刷新它們的 。