2011-07-23 28 views
2

我正在從jQuery AJAX調用中獲取一組搜索結果。我用回聲返回html,我需要通過插入到數據庫來備份結果。在插入之前,還必須檢查它們是否已經存在。如何正確地將結果備份到數據庫?

我希望html儘快返回。如果我在echo的下面添加插入代碼,那麼整個代碼必須在返回html之前完成運行?

最重要的是內容馬上返回給用戶。

這是全部在移動設備上,所以每100毫秒計數一次。

$data = file_get_contents($url); 
$result = json_decode($data, true); 

foreach ($result->results as $items) { 

$name = $items->name; 
$description = $items->desc; 
$id = $items->id; 
$coverurl = $items->coverurl; 

$returnhtml .= "<h3>".$name."</h3>"; 
$returnhtml .= "<h4>".$description."</h$>"; 

} 

echo $returnhtml; 


//how to backup to database 

//check if already in db 
//insert into db 
+0

您是否獲得從要將它們保存到同一數據庫服務器的搜索結果?如果是這樣,這聽起來像一個壞主意。 – b01

+0

不,我從google api json調用中獲得結果,並且想要備份這些結果 – vitalyp

+0

如果用戶希望數據一旦被看到響應後就保存到數據庫中,則執行inserts _after_將響應發送到用戶是一個非常糟糕的主意。插入可能會失敗。 – Mat

回答

2

要回答你的問題,是的。整個腳本必須在HTML輸出回客戶端之前完成。您可以使用輸出緩衝來捕獲輸出,發送它,然後繼續進行其他處理。然後,服務器將在腳本完成時嘗試輸出剩餘的內容,但AJAX不知道如何處理第二部分,因此它只是忽略它。

查找到http://www.php.net/manual/en/ref.outcontrol.php 這將是這樣的:

 
    ob_start(); 
    ... generate html for client 
    ob_flush();// send output buffer to the client 
    ... insert data into database 
    ob_end_clean(); 
相關問題