我正在进行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
答案 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。