※ 引述《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 去問(偽主動)。
轉自PTT
作者: gpmm (銀色) 看板: PHP
- May 15 Sat 2010 01:11
[電腦] PHP資料處理時間過長的替代方案
close
全站熱搜
留言列表