新聞中心

成都創(chuàng)新互聯(lián)公司服務項目包括忠縣網(wǎng)站建設、忠縣網(wǎng)站制作、忠縣網(wǎng)頁制作以及忠縣網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,忠縣網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到忠縣省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
最近發(fā)現(xiàn)了一個ajax異步請求的問題,用$.post、$.get、$.ajax請求PHP服務器時,總是無法異步返回數(shù)據(jù)。
經(jīng)多次測試才發(fā)現(xiàn):
– 不同瀏覽器,請求不同域名-不阻塞:無需實驗
– 不同瀏覽器,請求同域名-不阻塞:session_id()返回不同
– 同一瀏覽器,請求不同域名-不阻塞:session_id返回不同
– 同一瀏覽器,請求同域名-阻塞:session_id()返回相同
發(fā)現(xiàn)問題所在:
1 關(guān)閉XDEBUG
2 SESSION鎖
3 清除輸出緩沖區(qū)
1 關(guān)閉XDEBUGXDEBUG是實時調(diào)試。調(diào)試時,它將保持FPM以確保線程正在工作以避免數(shù)據(jù)污染。
典型的測試方法是,使用XDEBUG進行調(diào)試時,打開另一個瀏覽器并訪問該站點,該站點這個時候是無法訪問的。
這對并行響應有重大影響,即,即使前端發(fā)送多個請求,它也受XDEBUG控制,并且只能同時響應一個。
另外,由于XDEBUG依賴于SESSION,因此即使您使用session_write_close(),也要關(guān)閉會話鎖(請參見下文)。XDEBUG仍會自動打開。
2 SESSION鎖
用 session_write_close() 關(guān)閉SESSION的寫鎖,這適合SESSION保存為File的情況。如果SESSION保存在Redis,則不需要。
3 清除輸出緩沖區(qū)
使用session_write_close()可能無法立即關(guān)閉SESSION鎖,所以在這個方法之前加上:ob_end_flush()。讓 session_write_close() 馬上生效。
4 示例
有如下一個范例,當點擊【提交】按鈕時,前端會給后臺服務器發(fā)送兩種請求。
一種是get請求,每隔1秒請求一次。
一種是post請求,最開始的時候發(fā)送一次,然后等待相應結(jié)束。
看看HTML代碼
php代碼
$_SESSION['time']]);
exit();}if ($action == 'get') {
echo json_encode([session_id() => $_SESSION['time']]);
exit();} 文章題目:異步請求PHP服務器,不返回數(shù)據(jù)?(附解決辦法)
鏈接分享:http://fisionsoft.com.cn/article/cdciohs.html


咨詢
建站咨詢
