作者carlcarl (carl)
看板PHP
標題Re: [請益] 讓程式在後台執行
時間Thu Dec 1 04:52:16 2011
※ 引述《imyachi (yachi)》之銘言:
: 最近在寫一個php,碰到一個問題,想向大家請教
: 網頁主要是將使用者的資料和參數傳到linux server上,
: 然後對linux下指令,開始執行。
: 程式執行運算通常需要30分鐘以上,
: 所以想要 在下指令以後 讓程式在server上面跑,
: 跑完後再把結果 透過email傳給使用者。
: 現在遇到的問題是:
: 用exec()傳送指令,
: 程式開始執行....
: 然後 主網頁畫面就會因為timeout所以顯示無法使用
: 但是...在程式執行完後,email仍會收到結果。
: ==================
: 所以希望 在程式開始執行時,
: 網頁畫面就跳出 "" 程式執行中,我們會把執行結果送到您的信箱""
: 這些字樣~
: 然後使用者就可以關掉網頁???!!
: ====================
: 主要想法是這樣,
: 可是不知道該怎麼實作,
: 剛剛爬文後,還是一頭霧水QQ
: 只好再麻煩大家,提供一些建議:D:D
: 謝謝謝謝~~~~~~~~
這樣?
首先先彈個視窗給user
echo "<script type='text/javascript'>alert('程式執行中,我們....');</script>";
背景執行, unrar是隨便一個例子,
另外要把output導到/dev/null才行的樣子 只用&好像還是會卡在網頁load
$cmd = "unrar aaa.rar > /dev/null &";
exec($cmd);
然後寄信
mailto(xxxxx);
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.47.74.192
推 imyachi:好像懂了~~ 來試試看!!!! 謝謝你唷^_^ 12/01 11:00
→ MOONRAKER:max_execution_time可以到1800嗎? 12/01 11:57
→ bibo9901:set_time_limit(0); 就不會 timeout 12/01 19:19
→ MOONRAKER:這樣真的好嗎? 12/01 21:20
→ bibo9901:不知道耶... 12/01 22:11
→ shadowjohn:如果真的太大超時要跑,還是跑個crontab弄個queue :) 12/01 22:15
推 waterdroporg:設成0的確OK,有次我設成0做批次上傳圖片,結果 12/07 02:08
→ waterdroporg:想停止關掉網頁還是繼續跑= = 12/07 02:09