首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php & shell_exec进程在几秒钟后停止

php & shell_exec进程在几秒钟后停止
EN

Stack Overflow用户
提问于 2019-09-30 20:41:48
回答 2查看 1.3K关注 0票数 5

我使用带有简单html界面的PHP脚本文件来控制FFMPEG进程从浏览器开始和停止,脚本的目标是在我的服务器上启动实时流,通常连续运行几个小时(使用ffmpeg和nginx-rtmp ),直到最近我注意到这是我的php脚本变量的奇怪行为。

代码语言:javascript
复制
$cast =" /usr/sbin/ffmpeg -loglevel 0 -thread_queue_size 32768 -re -i '".$src."' -i /var/www/example/logo.png -r 23.976 -strict -2 480x360 -aspect 16:9 -filter_complex 'overlay=x=(main_w-overlay_w)/2:y=(main_h-overlay_h)-23' -vcodec libx264 -x264opts colormatrix=bt709 -profile:v high444 4 -b:v 290k -maxrate 290k -bufsize 250k  -af "aresample=async=1:min_hard_comp=0.100000:first_pts=0" -acodec libfdk_aac -profile:a aac_he_v2 -b:a 16k -map_metadata -1 -f flv  rtmp://localhost/hls/live 2>/dev/null >/dev/null  & " ; 
$output =  shell_exec( $cast   )    ;

这就像FFMPEG进程一直持续到原来的php进程(也称为它)死亡为止,起初我认为sorce或ffmpeg命令会出现这个问题,但是我在sell上测试了相同的命令,它运行得很好。我对史迪奥等人的怀疑并没有被重新引导。即使当我从shell中导出相同的php脚本时,它也会在几秒钟后执行相同的停止操作。

=Edit=

即使当我试图从命令行运行ffmpeg并使其在后台运行时,我也有相同的行为--几秒钟后进程停止,只有等待输出的情况下,ffmpeg才会继续运行。

这是我的操作系统细节:-

代码语言:javascript
复制
DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"
NAME="Ubuntu"
VERSION="18.04.3 LTS (Bionic Beaver)"
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-06 02:10:41

好吧,好吧,经过几天的尝试和探索,这个问题看起来主要是关于ffpmeg的,原因不明,我拒绝运行而没有定义任何输出管道,我猜是输入stram不时地掉下了一些帧。无论如何,这就是我添加到ffmpeg命令末尾的内容。

代码语言:javascript
复制
$cast ="< /dev/null /usr/sbin/ffmpeg -loglevel verbose -thread_queue_size 12768 -re -i \"$link/$chnl\" -r 23.976 -s 480x360  -vcodec libx264 -b:v $bitrate -minrate $bitrate -maxrate $bitrate -bufsize $bitrate -acodec aac -b:a 29k -map_metadata -1 -f flv rtmp://localhost/hls/live  </dev/null >/dev/null 2>/var/www/vlc10/ffmpeg.log & " ;
exec(   $cast   ) ; 

我不得不重定向ffmpeg来记录文件,就像这个</dev/null >/dev/null 2>/var/www/vlc10/ffmpeg.log &前夕ffmpeg有静默模式,但是它不能工作,“或者至少几秒钟后就崩溃了”。

票数 4
EN

Stack Overflow用户

发布于 2019-09-30 20:55:27

PHP对CLI和PHP作为FPM或Apache有不同的信任(php.ini)

因此,在您的情况下,您需要为正确的环境修改时间。您可以在相应的php.ini、ini_set()或set_time_limit()中设置它

编辑:也许你想切换到主管(),但请记住:

如果一个程序是用这个函数启动的,为了使它在后台继续运行,程序的输出必须重定向到一个文件或另一个输出流。如果不这样做,将导致PHP挂起,直到程序执行结束。

请使用逃避责任()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58175049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档