看板 PHP 關於我們 聯絡資訊
※ 引述《Godkin (Nostalgie)》之銘言: : 請問各位前輩, : 小弟目前正著手製作一個網站, : 網站的功能可讓使用者在填寫資料、上傳檔案後, : 用email通知使用者一些資訊, : 此時網站中有一支外部程式來處理使用者上傳的檔案 : 問題就在這環節, 因為這外部程式需要的執行時間頗久, : 所以此時必須先在網頁上告知使用者可以先關閉瀏覽器, : 待處理完畢之後, 再發email通知使用者連上某個link去看結果 : 我參考了網路上一些解法, : 如pcntl_fork() 或是 proc_open()等作法 : 但仍不是很清楚這些multi-processes的概念, 像是pipe 這個地方要注意,你 fork 出來的東西,萬一 parent 死了,child 就沒了。 : 此外, 我所使用的外部程式並不是一般系統指令 : 需額外加上一些參數, 如: xxx.sh -s -t -i $input -o $output這種指令 : 能否請有經驗的前輩指點一二? : 小弟感激不盡! 你可以考慮一下 gearman 這類的解決方案 ( http://gearman.org/ ) 收到上傳檔案之後,把你要做的事情 (例如: 待處理的檔名) 透過的 Client API 寫到 Job Server ,基本上這樣就結束了,之後背景的 Worker 再處理由 Job Server 拿到的任務(待處理的檔名),處理完就把連結寄出去,讓使用者看結果。 如果覺得上面的方法太複雜,也可以弄簡單一點,自行維護一個列表, 然後用 cron 去掃那個列表來做,做完一筆就發一次信給使用者也可以。 -- The Internet: where men are men, women are men, and children are FBI agents. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.220.104.63
Godkin:非常感謝!! 05/25 15:18