php 提取返回資料,後面程式碼繼續執行封裝函式
阿新 • • 發佈:2018-12-18
使用者登入後,記錄使用者登入日誌,傳送登入通知等邏輯不需要使用者等待等場景,可以先返回資料更使用者, 後面登入日誌等返回資料後再執行
提示:nginx和Apache提前返回資料不一樣詳見函式內部程式碼
使用方法:
$data =‘hello world!’; // 字串或陣列,陣列將被轉換成json字串
imme_return($data ,10); //立即返回字串,後面程式最大執行時間10s //執行其它無需使用者等待的程式 //寫入資料庫,redis,傳送通知…
/* 中斷並返回資料,後面程式繼續執行,避免使用者等待(immediate) * 可用於返回值後,繼續執行程式,但程式佔得所以自由沒有釋放,一致佔用,務必注意,最好給單獨指令碼執行 * @param string|array $data 字串或陣列,陣列將被轉換成json字串 * @param intval $set_time_limit 設定後面程式最大執行時間,0不限制,但web頁面設定最大執行時間不一定靠譜,可改用指令碼或單獨開子程序 * @return */ function imme_return($data ='',$set_time_limit=20) { $str=is_string($data) ? $data : json_encode($data); echo $str; if(function_exists('fastcgi_finish_request')){ //Nginx使用 fastcgi_finish_request(); //後面輸出客戶端獲取不到 }else { //apache 使用 $size = ob_get_length(); header("Content-length: $size"); header('Connection:close'); ob_end_flush(); //ob_flush(); //加了沒效果 flush(); } ignore_user_abort(true); set_time_limit($set_time_limit); return true; }