Re: [請益] 資料處理時間過長的替代方案

看板PHP作者 (銀色)時間15年前 (2010/03/10 01:02), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《freehand1122 ( )》之銘言: : 最近在維護某個網站,開發語言是php、資料庫是mysql : 有做了一個功能會涉及檔案IO、資料處理和匯入資料庫三個部分 : 但是這個功能約需花費1分鐘的時間 : 也就是client約需要等待1分鐘,server才會回應 : 這對現在瀏覽網頁的人來說,可能是件痛苦的事情... : 請問有沒有什麼方法讓server做自己的工作的同時,client也可以做其他事情 : 而不用等待server回應 : 有想過用第三方語言做這個功能,而只將網頁當成介面 : 不知道這樣的想法可不可行,或者有更好的解決方法 : 感謝 依照你的需求,看起來你需要: 1.對於執行不會進行等待,或可以產生獨立程序的 func 2.能夠有辦法得知後面處理的進度,結束或否 執行而不等待可以用 fsockopen, 把要執行的部份寫成獨立 php,榜定 REMOTE_ADDR 以防被亂搞, 模擬 http head 送出去之後不繼續用 fgets 之類取回應, 這樣可以送出一個斷線的背景執行。 http://php.net/manual/en/function.fsockopen.php 如果同樣斷線放風箏的方式要用 fopen 來做會相對複雜一點 (不是 code 的長短,而是要把設定改來改去…),可以參考 http://php.net/manual/en/function.fopen.php#64262 如果要走獨立程序,可以參考 pcntl_fork http://php.net/manual/en/function.pcntl-fork.php 至於執行完之後怎麼讓 client 知道, 最簡單的就是在 session 裡東改西改, 看是要 client 在每次重新換頁就去檢查(被動), 或另外再加上 js 背後定時送 request 去問(偽主動)。 -- 題外話…因為小弟一直在 php4 裡滾,所以這些都是 4 的解法, php 5 應該會有其他更好用的 func,您可以再找看看 o_oa" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.232.104 ※ 編輯: gpmm 來自: 118.168.232.104 (03/10 01:07)
文章代碼(AID): #1BbdyUra (PHP)
文章代碼(AID): #1BbdyUra (PHP)