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

php中文网
发布: 2016-08-04 09:20:29
原创
1191人浏览过

需求描述:
使用百度云平台的视频解决方案,它的解决方案是手机端先上传至自有服务器,再由自有服务器上传至百度的服务器,现在希望php后台在完成用户上传至自有服务器时,返回用户上传成功,然后执行上传至百度服务器的操作。 现在遇到的问题是:php后端是等待所有的执行完成后,才会对客户端进行返回。搞得每一次都会等很久。

不知道各位大神可以指导一下小子吗?做前端的,php初级,遇到很多的问题,谢谢各位大神们。

回复内容:

需求描述:
使用百度云平台的视频解决方案,它的解决方案是手机端先上传至自有服务器,再由自有服务器上传至百度的服务器,现在希望php后台在完成用户上传至自有服务器时,返回用户上传成功,然后执行上传至百度服务器的操作。 现在遇到的问题是:php后端是等待所有的执行完成后,才会对客户端进行返回。搞得每一次都会等很久。

不知道各位大神可以指导一下小子吗?做前端的,php初级,遇到很多的问题,谢谢各位大神们。

如果你的PHP服务用的是PHP-FPM,可以专门开一个用于处理视频上传操作的进程池pool,脚本用fastcgi_finish_request快速响应用户完成请求后,执行耗时的上传处理.

跃问视频
跃问视频

阶跃星辰推出的AI视频生成工具

跃问视频 39
查看详情 跃问视频

立即学习PHP免费学习笔记(深入)”;

<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>
登录后复制

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

相关标签:
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号