gpt4 book ai didi

php - 带有 PHP 的 FFmpeg 导致内部服务器错误

转载 作者:行者123 更新时间:2023-12-04 23:01:00 28 4
gpt4 key购买 nike

我有一个 PHP 脚本,它调用 exec() 来使用 ffmpeg 转换视频文件。该脚本适用于较小的文件,但较大的文件(通常约为 20MB)在转换运行约 45 秒后会产生 500 内部服务器错误。

max_execution_time 设置为 600 秒(10 分钟),最大发布和上传大小设置为 1000 MB。服务器是基于 Unix 的,并且没有在安全模式下运行。

虽然这个问题只发生在较大的尺寸上,但我什至不确定这是一个文件大小问题。该脚本将通过一个 12.6MB 的 MOV 文件,但将失败一个 11MB 的 MP4 文件。

下面是我脚本中的 exec() 行:

exec('ffmpeg -y -i '.escapeshellarg($uploadFile).' -vcodec libx264 -ab 128k -ac 2 -b 640k -g 300 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -maxrate 10M -bufsize 10M -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -level 30 '.$convertFile);

谢谢!

最佳答案

我在使用 mod_fcgid 和 Apache 时遇到过类似的 PHP 和超时问题。 mod_fcgid 似乎对长时间运行的脚本存在问题,无论更改超时值多少,我仍然无法让它一直运行良好。

我发现一些可以解决这个问题的选项:

  • 不要使用 PHP 脚本 - 使用 PHP CLI 和 cron 作业
  • 不要在您用来编码的网站上使用 mod_fcgid,使用 CGI
    包装器甚至 mod_php

  • 我正在编辑它,因为我发现了一组非常有用的链接,它们解决了我的问题:

    http://profiles.ysn.com/supportforum/viewtopic.php?f=7&t=283&start=15#p1300

    http://www.virtualmin.com/node/19879

    我补充说:
    <IfModule !mod_fastcgi.c>
    AddHandler fcgid-script fcg fcgi fpl
    IdleScanInterval 10800
    BusyScanInterval 10800
    ZombieScanInterval 60
    </IfModule>

    进入我的 fcgid.conf 文件和
    IPCConnectTimeout 10800
    IdleTimeout 10800
    ProcessLifeTime 10800
    BusyTimeout 10800

    进入我的 httpd.conf 中的相关 <VirtualHost> ,重新启动 apache 并且超时已停止。

    关于php - 带有 PHP 的 FFmpeg 导致内部服务器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7917628/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com