首頁 >後端開發 >php教程 >javascript - php非同步視訊處理問題?求大神指導

javascript - php非同步視訊處理問題?求大神指導

WBOY
WBOY原創
2016-08-04 09:20:29968瀏覽

需求描述:
使用百度雲平台的視訊解決方案,它的解決方案是手機端先上傳至自有伺服器,再由自有伺服器上傳至百度的伺服器,現在希望php後台在完成用戶上傳至自有伺服器時,返回使用者上傳成功,然後執行上傳至百度伺服器的操作。 現在遇到的問題是:PHP後端是等待所有的執行完成後,才會對客戶端進行回傳。搞得每次都會等很久。

不知道各位大神可以指導一下小子嗎?做前端的,php初級,遇到很多的問題,謝謝各位大神們。

回覆內容:

需求描述:
使用百度雲平台的視訊解決方案,它的解決方案是手機端先上傳至自有伺服器,再由自有伺服器上傳至百度的伺服器,現在希望php後台在完成用戶上傳至自有伺服器時,返回使用者上傳成功,然後執行上傳至百度伺服器的操作。 現在遇到的問題是:PHP後端是等待所有的執行完成後,才會對客戶端進行回傳。搞得每次都會等很久。

不知道各位大神可以指導一下小子嗎?做前端的,php初級,遇到很多的問題,謝謝各位大神們。

如果你的PHP服務用的是PHP-FPM,可以專門開一個用於處理視頻上傳操作的進程池pool,腳本用fastcgi_finish_request快速響應用戶完成請求後,執行耗時的上傳處理.

<code><?php
echo '手机端视频先上传至自有服务器';
sleep(10);
echo '上传成功';
fastcgi_finish_request(); //响应用户,结束请求
echo '程序继续操作,从自有服务器上传至百度服务器';
sleep(10);</code>

在檔案上傳過程中PHP-FPM並不會被阻塞,因為Nginx接收完上傳的內容後才一次性交給PHP-FPM.
"從自有伺服器上傳至百度伺服器"這個操作則會阻塞佔用一個PHP -FPM工作進程.
這時可以考慮建立的upload進程池來處理這個操作,避免阻塞系統的其他腳本運行.

<code>nginx.conf: upload.php脚本的处理都交给监听9001的PHP-FPM进程池处理
location = /upload.php {
    include fastcgi_params;
    fastcgi_pass 127.0.0.1:9001;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

php-fpm: 正常的脚本由静态www池处理,网络阻塞脚本由动态upload池处理
[www]
listen = 127.0.0.1:9000
pm = static
pm.max_children = 4
[upload]
listen = 127.0.0.1:9001
pm = dynamic
pm.max_children = 8
pm.start_servers = 4
pm.min_spare_servers = 4
pm.max_spare_servers = 4</code>

可以使用佇列,使用者傳完之後直接壓一個任務到佇列裡然後返回上傳完成,系統再執行個定時任務去跑這個佇列。隊列應用形式有好幾種,你搜搜看

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn