您最簡單的選擇將是ajax輪詢 - 將請求發送到web服務,然後每隔x秒輪詢一次。響應處理程序(完成時由webservice調用的腳本)需要將數據保存在某處,例如數據庫或會話,輪詢腳本將檢查此數據。
這雖然會稍微增加服務器的負載,如果您設置的輪詢間隔足夠高,應該沒事
session_start();
if(isset($_GET['sendrequest'])){
WebService:sendRequest(['callback_url'=>'thispage?receiveresponse=1'])
$_SESSION['response']=false;
die();
}elseif(isset($_GET['receiveresponse'])){
$response = WebService:receive();
$_SESSION['response'] = $response;
die();
}elseif(isset($_GET['checkresponse'])){
$data=[];
if($_SESSION['response']){
$data['success']=true;
$data['response']=$_SESSION['response'];
}else{
$data['success']=false;
}
header('Content-Type: application/json');
die(json_encode($data);
}
<html>
<head>....</head>
<body>
<a id="send" href="#">Send Request</a>
<div id="response"></div>
<script>
var poll;
$('#send').click(function(ev){
ev.preventDefault();
$post('?sendrequest=1', {...}, function(){
poll = setInterval(function(){
$get('?checkresponse=1', function(response){
if(response.success){
clearInterval(poll);
$('#response').html(response.response);
}
});
}), 3000);
});
});
</script>
</body>
</html>
PHP有沒有asynchronousity的概念。另外你是什麼意思的異步服務?這是一個web服務,它接受回調端點或什麼? – Steve
@Steve我知道PHP沒有異步的概念,所以我注意到我想我必須使用Ajax。是的,這是可以獲得一些數據並在結束後將結果發送到某個URL的Web服務 – Daria
_I有兩個頁面:第一個是將數據發送到服務,第二個從該服務接收響應並將其插入到數據庫中_爲什麼兩個?服務響應是否太慢? – hindmost