【问题标题】:PHP stops after exactly 46 secondsPHP 在 46 秒后停止
【发布时间】:2012-10-12 08:45:49
【问题描述】:

看到很多题目有类似的问题,但没有类似的情况,因为php的设置好像不是问题。

当前的 php.ini 设置为:

max_execution_time = 600
max_input_time = 600
memory_limit = 512M
post_max_size = 192M
upload_max_filesize = 192M

这些设置不能被本地 .htaccess 覆盖

脚本 该脚本是 PHP 并执行以下操作:

用户上传电影文件(使用uploadify)。 上传完成后,脚本会使用 ffmpeg 将其转换为质量较低的 480p flv 文件。

问题 该脚本一直有效,自从从 php 5.3.9 升级到 5.3.17 后,它就停止了工作。 上传部分工作正常。我已经尝试过使用 1Mb 到 190mb 的文件。 上传后,转换开始,脚本总是在 46 秒处停止。我不知道为什么,但总是 46 秒。

服务器 服务器是至强四核 16Gb 内存,平均负载为 0.62(8 = 100% cpu 使用率)

我真的不知道问题出在哪里。脚本运行良好,没有改变。所以肯定和新的 PHP 或者 Apache 有关系,但我不知道。

有人对可能出现的问题提出建议吗?

【问题讨论】:

标签: php apache ffmpeg timeout uploadify


【解决方案1】:

检查 Apache 的 TimeOut 设置,或将其添加到 VirtualHost 部分:

TimeOut 2400

您还可以通过编写一个休眠 47 秒的脚本来检查它是否真的是超时或其他问题(如内存):

<?php

sleep(47);
echo "Hi I'm still alive!";

【讨论】:

  • 谢谢。 Apache TimeOut = 600,我尝试了这个,46 秒后我得到一个 404 错误页面。
  • 您确定 Apache TimeOut 吗?你能明确地设置它吗?您可以尝试从 CLI 运行脚本吗?
  • 感谢您的 php 代码,我在 apache error_log 中找到了一些内容。它与 mod_fcgid 有关:所以我将其修复为:登录 WHM > Apache Configuration > Include Editor > Post VirtualHost Include > All 并添加 FcgidProcessLifeTime 8200 FcgidIOTimeout 8200 FcgidConnectTimeout 400 FcgidMaxRequestLen 1000000000
【解决方案2】:

解决方案

感谢 Nin,我在我的 apache error_log 中找到了一些东西并且能够修复它:

登录 WHM > Apache 配置 > 包含编辑器 > 发布 VirtualHost 包含 > 全部

并添加

<IfModule mod_fcgid.c>
 FcgidProcessLifeTime 8200
 FcgidIOTimeout 8200
 FcgidConnectTimeout 400
 FcgidMaxRequestLen 1000000000 
</IfModule>

好像是fcgi的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 1970-01-01
    • 2016-09-03
    • 2021-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多