Как правильно сделать резервную копию результатов в базе данных? - PullRequest
2 голосов
/ 24 июля 2011

Я работаю над вызовом jQuery AJAX, где я получаю набор результатов поиска. Я возвращаю HTML с эхом, и мне нужно сделать резервную копию результатов, вставив в БД. Также придется проверить, если они уже существуют, прежде чем вставлять.

Я хочу вернуть HTML как можно скорее. Если я добавлю код вставки ниже эха, весь код должен завершиться, прежде чем 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 ]

2 голосов
/ 24 июля 2011

Чтобы ответить на ваш вопрос, да.Весь сценарий должен быть завершен до того, как 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 голос
/ 24 июля 2011

После выполнения ob_flush, как описано выше, вы можете попробовать MySQL INSERT DELAYED, если вы не ждете завершения INSERT.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...