[英]Execute PHP after echo'ing to AJAX callback
讓我們有這個ajax調用:
App.prototype.askServer= function(obj) {
return $.ajax({
type: "POST",
dataType: 'json',
url: 'php/ajax.php',
data: {
stuff: obj
}
}).success(function(data) {
console.log(data);
});
}
我的ajax.php看起來像這樣:
<?php
$stuff = $_POST['stuff'];
// execute curl that takes 1 second
echo $response
// parse $response through multiple loops and save into files and databases
// takes 5 seconds
?>
在PHP腳本echo
某些內容后,ajax回調會立即執行嗎? 還是會等待整個PHP腳本執行? 換句話說:我的ajax回調會在1或6秒后執行嗎?
我問的原因是因為我從curl
獲得了相當大的JSON。 我想將其返回給ajax回調,然后,我要拆開數據,將一些東西保存到數據庫中,將其他數據保存到JSON文件中,依此類推。 這需要一段時間,但客戶端不必等待。
在PHP繼續執行腳本的同時,可以盡早關閉連接。
您將需要定義ignore_user_abort(true);
在您的PHP腳本中並調用flush();
在echo $response;
之后 腳本繼續執行,但是連接將關閉,導致執行Ajax回調。
您將需要拆分處理。 只需注冊用戶的請求,然后再處理即可。 有幾個所謂的消息隊列或工作隊列可用於PHP。 您可能想看看RabbitMQ
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.