看板 PHP 關於我們 聯絡資訊
//一些有的沒的 (略) //顯示完成頁面 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
PsMonkey:是我看不懂嗎? 我覺得這用 AJAX 很合理阿? 09/12 00:56
LaPass:fastcgi_finish_request(); 找到了,是用這個 XD 09/12 01:10
LaPass:1F,就是,要做的是SERVER端的工作,而用戶根本不需要知道 09/12 01:12
LaPass:、看到server要做什麼東西那樣。 09/12 01:12
LaPass:如果是java的話我就開條執行緒去跑了 09/12 01:13
danny8376:原本想先問伺服器端到底怎跑的www 如果用fastCGI的話 09/12 01:25
danny8376:確實是用那個XD 如果是掛apache的module要看 09/12 01:25
danny8376:是不是被deflate之類的buffer住了~~~ 09/12 01:26
ousapas:如果真的是很花時間的程式 可以用個job queue來處理 09/12 01:27
johnny1972:fastcgi_finish_request()必須web是跑fastcgi模式 09/12 01:29
johnny1972:如果是走apache2+mod_php就得用別的解法 09/12 01:30
johnny1972:要小心register_shutdown_function跟destructor都不會 09/12 01:33
johnny1972:被輸出到client去,所以有可能影響到一些設計 09/12 01:34
LaPass:我記得我是用apache2 orz.... 09/12 01:36
LaPass:在寫的時候是用xamp,不過實際在跑SERVER是apache2.... 09/12 01:37
danny8376:apache不是重點 是PHP到底怎跑 這方法只對PHP-FPM有效 09/12 01:38
LaPass:SERVER那邊試過了,找不到fastcgi(略).... orz 09/12 01:58
danny8376:那就用header的connection:close + content-length吧 09/12 03:16
danny8376:記得要設法取消掉server上各種可能的buffer 09/12 03:16
changic:費時的處理←如果完全不需要輸出給client的話 09/12 09:59
changic:能將成是拆成兩個部分,費時處理的部分獨立用CLI方式~? 09/12 10:00
LaPass:謝謝各位給的關鍵字,我去研究一下 09/12 13:46
johnny1972:如果是用買的WebHost沒辦法自己掛其他東西的話還有幾招 09/12 15:20
johnny1972:要看WebHost上限制多大決定需不需要搭配一點點AJAX 09/12 15:28
johnny1972:若可以用fopen/file_get_contents http或curl就不需要 09/12 15:30