javascript - php實現後台運行,運行結束後並通知前台反饋。

來源:互聯網
上載者:User
關鍵字 php javascript shell node.js html5
目前使用php執行指令碼,但是在前台頁面如果關閉的話,會終止指令碼執行,所以希望切換到後台運行

還有一種可以在前台運行,但是提供運行進度,比如目前即時更新執行狀態,比如已經執行到80%,然後到100%完成後提示完成資訊。

舉個列子,比如實現視頻轉碼,目前正在轉碼,然後希望在後台轉碼,不影響前台操作。
另外一種佔用前台操作,但是可以告訴前台目前還在轉碼,還有多少沒轉碼。

回複內容:

目前使用php執行指令碼,但是在前台頁面如果關閉的話,會終止指令碼執行,所以希望切換到後台運行

還有一種可以在前台運行,但是提供運行進度,比如目前即時更新執行狀態,比如已經執行到80%,然後到100%完成後提示完成資訊。

舉個列子,比如實現視頻轉碼,目前正在轉碼,然後希望在後台轉碼,不影響前台操作。
另外一種佔用前台操作,但是可以告訴前台目前還在轉碼,還有多少沒轉碼。

視頻轉碼,耗時較長,不應該阻塞PHP-FPM進程,所以應該另開一個進程非同步處理:
pclose(popen('php /path/to/task.php &', 'r'));
指令碼task.php裡調用Linux命令mencoder/ffmpeg/imagemagick(convert)處理多媒體檔案,
並在資料庫任務表裡插入一條資料,用來記錄任務的狀態進度,供前端AJAX檢查.

1、轉碼服務是一個進程,提供2個介面功能(a:接受轉碼請求並處理,b:查詢轉碼進度)
2、前端調用這2個介面即可。

針對這兩種。後台進行執行的,我所瞭解到的就是建立一張資料表,比如視頻轉碼,發送郵件等,要執行對應的操作的時候向資料庫插入資料,然後編寫一個定時任務去後台完成相關操作

在前台執行並顯示進度條,將每一次的操作當成一步,算出共多少步,涉及到的就比較多了

後台非同步可以用Swoole擴充。
至於進度可以用資料庫或者redis之類的進行通訊,比如進度每過5%,更新一下資料庫/redis, 前台則是每10秒查詢一次最新狀態,這樣的。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.