php异步方案,php 伪异步执行实现方法
需求描述:
客戶端訪問php文件,php需要做某個耗時的操作。
例如:訪問遠程接口數據 而客戶端不需耗時操作的結果只期望快速得到輸出.
php本身是不支持異步操作的,可以用子進程的方式模擬異步操作執行,但實現起來比較復雜而且只支持linux平臺。
本節分享一個簡單的偽異步執行方案:
利用http的特性,強制輸出 connection close的header,讓瀏覽器認為服務端已經執行完畢,從而直接斷開鏈接顯示出結果。
例子,php異步執行實例代碼。
復制代碼 代碼示例:
ignore_user_abort();? //保證客戶端斷開連接后程序依然正常執行
ob_start();? //開啟輸出緩沖? header可以在輸出之后執行
header('Connection: close');? //輸出header
echo('test');? //輸出內容
$size = ob_get_length();
header("Content-Length: $size");
ob_end_flush(); //輸出緩沖
flush(); //輸出緩沖
foreach($i=0;$i<5;$i++)
file_get_contents("http://www.jbxue.com");//執行 耗時操作
?>
代碼說明:
用循環抓取5次百度的首頁來模擬耗時的操作。
執行之后,瀏覽器幾乎瞬間顯示出服務端的輸出test。
而且不會顯示頁面一直在加載中的狀態,也就是服務端先把輸出結果返回給客戶端,客戶端不用再等待,循環5次,抓取腳本學堂首頁的代碼執行完才能看到結果。
以上通過一個變通的辦法,實現了php代碼的異步執行,確實不錯,值得學習參考。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的php异步方案,php 伪异步执行实现方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求一个向量变换为另一个向量的矩阵_Ope
- 下一篇: 如何获取图像的驱动_Adobe Came