如何将结果正确备份到数据库?

时间:2011-07-23 20:51:45

标签: php mysql ajax

我正在进行jQuery AJAX调用,我从搜索中获得了一组结果。我返回带有echo的html,我需要通过插入db来备份结果。在插入之前还需要检查它们是否已经存在。

我希望尽快返回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

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:1)

按照之前的说明执行ob_flush后,如果不等待INSERT完成,可以尝试MySQL INSERT DELAYED。

http://dev.mysql.com/doc/refman/5.5/en/insert-delayed.html