首页 > 后端开发 > php教程 > javascript - php异步视频处理问题?求大神指导

javascript - php异步视频处理问题?求大神指导

WBOY
发布: 2016-08-04 09:20:29
原创
948 人浏览过

需求描述:
使用百度云平台的视频解决方案,它的解决方案是手机端先上传至自有服务器,再由自有服务器上传至百度的服务器,现在希望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></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>
登录后复制

可以使用队列,用户传完之后直接压一个任务到队列里然后返回上传完成,系统再执行个定时任务去跑这个队列。队列应用形式有好几种,你搜搜看

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板