[請益] 在程式結束前斷開連結

看板PHP作者 (LaPass)時間12年前 (2013/09/12 00:53), 編輯推噓3(3022)
留言25則, 6人參與, 最新討論串1/2 (看更多)
//一些有的沒的 (略) //顯示完成頁面 require('view.php'); //強制顯示 ob_flush(); flush(); set_time_limit(120); //這理是處理可能比較花時間的事情 //我用個sleep(60)來當作代表 (php.ini已經把timeout改成120) sleep(60); //結束 exit(); 因為有個動作很花時間,所以我打算先把頁面印出來 (裡面含有重新導向的東西) 但是頁面印出來之後 瀏覽器上雖然看的到頁面,但是整個頁面會停住不動 載入中的圖示也一直轉啊轉的.... 直到sleep結束為止,才會重新定向跳頁過去 我想請問要怎麼解決這個問題? 我希望的是SERVER端直接把連結斷開,然後繼續把工作做完 而不是卡個跟client端的連線在那邊.... 然後,我要的也不是ajax,因為我所做的動作是去遠端的SERVER抓東西進來 並更新一些資料庫的數據,要是client端隨斷線我也會很困擾..... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.252.122.207

09/12 00:56, , 1F
是我看不懂嗎? 我覺得這用 AJAX 很合理阿?
09/12 00:56, 1F

09/12 01:10, , 2F
fastcgi_finish_request(); 找到了,是用這個 XD
09/12 01:10, 2F

09/12 01:12, , 3F
1F,就是,要做的是SERVER端的工作,而用戶根本不需要知道
09/12 01:12, 3F

09/12 01:12, , 4F
、看到server要做什麼東西那樣。
09/12 01:12, 4F

09/12 01:13, , 5F
如果是java的話我就開條執行緒去跑了
09/12 01:13, 5F

09/12 01:25, , 6F
原本想先問伺服器端到底怎跑的www 如果用fastCGI的話
09/12 01:25, 6F

09/12 01:25, , 7F
確實是用那個XD 如果是掛apache的module要看
09/12 01:25, 7F

09/12 01:26, , 8F
是不是被deflate之類的buffer住了~~~
09/12 01:26, 8F

09/12 01:27, , 9F
如果真的是很花時間的程式 可以用個job queue來處理
09/12 01:27, 9F

09/12 01:29, , 10F
fastcgi_finish_request()必須web是跑fastcgi模式
09/12 01:29, 10F

09/12 01:30, , 11F
如果是走apache2+mod_php就得用別的解法
09/12 01:30, 11F

09/12 01:33, , 12F
要小心register_shutdown_function跟destructor都不會
09/12 01:33, 12F

09/12 01:34, , 13F
被輸出到client去,所以有可能影響到一些設計
09/12 01:34, 13F

09/12 01:36, , 14F
我記得我是用apache2 orz....
09/12 01:36, 14F

09/12 01:37, , 15F
在寫的時候是用xamp,不過實際在跑SERVER是apache2....
09/12 01:37, 15F

09/12 01:38, , 16F
apache不是重點 是PHP到底怎跑 這方法只對PHP-FPM有效
09/12 01:38, 16F

09/12 01:58, , 17F
SERVER那邊試過了,找不到fastcgi(略).... orz
09/12 01:58, 17F

09/12 03:16, , 18F
那就用header的connection:close + content-length吧
09/12 03:16, 18F

09/12 03:16, , 19F
記得要設法取消掉server上各種可能的buffer
09/12 03:16, 19F

09/12 09:59, , 20F
費時的處理←如果完全不需要輸出給client的話
09/12 09:59, 20F

09/12 10:00, , 21F
能將成是拆成兩個部分,費時處理的部分獨立用CLI方式~?
09/12 10:00, 21F

09/12 13:46, , 22F
謝謝各位給的關鍵字,我去研究一下
09/12 13:46, 22F

09/12 15:20, , 23F
如果是用買的WebHost沒辦法自己掛其他東西的話還有幾招
09/12 15:20, 23F

09/12 15:28, , 24F
要看WebHost上限制多大決定需不需要搭配一點點AJAX
09/12 15:28, 24F

09/12 15:30, , 25F
若可以用fopen/file_get_contents http或curl就不需要
09/12 15:30, 25F
文章代碼(AID): #1ICA0YKt (PHP)
文章代碼(AID): #1ICA0YKt (PHP)