尝试加载大视频但出现“503 服务不可用”

Trying to load large video but getting '503 Service Unavailable'

我在将大型视频加载到浏览器时遇到问题。我有一个 video.php 文件,它创建一个 $token 来访问 $_GET['product'] 中指定的产品,然后 video.js 请求访问视频文件。

<video id="viewer"
class="video-js vjs-default-skin vjs-big-play-centered"
data-setup='{ "controls": true, "autoplay": false, "preload": "metadata" }'
height="500" width="1000" disablePictureInPicture controls="disabled">
  <source src="videostream?type=m3u8&path=<?php echo $token; ?>/prog_index.m3u8" type="application/x-mpegURL">
</video>

然后服务器应该 return 视频块。视频存储方式如下:

private
- products
-- 1
--- prog_index.m3u8
--- fileSequence0.ts
--- fileSequence1.ts
--- fileSequence2.ts
--- and so on...

它将文件夹复制到 tmp,文件夹的名称就是令牌。假设令牌是 1234123412341234:

private
- tmp
-- 1234123412341234
--- prog_index.m3u8
--- fileSequence0.ts
--- fileSequence1.ts
--- fileSequence2.ts
--- and so on...

文件在加载时会被删除。

当我尝试访问 mysite.com/video.php?product=1 时,我收到 503 服务不可用。

视频文件的总大小约为 1-2GB,我使用的是 GoDaddy 托管。

谢谢!

为什么会出现 503 错误?

GoDaddy 托管会抛出一个 503 ERROR,如果:

a) 您的网站达到最大并发连接数限制或

b) 如果您的托管帐户用完了所有可用资源(这里可能就是这种情况,因为您提到必须加载超过 1 GB 的大型视频文件

分辨率

根据您的托管帐户类型,解决方案如下:

Linux 托管 (cPanel): 结束您 Linux 托管帐户中的 PHP 进程(有关详细信息,请单击 here)

Windows 托管 (Plesk): 尝试 recycling your application pool

Web 托管 (Linux): 使用 Manage system process (Linux) in my Web & Classic Hosting account

结束进程

虚拟主机 (Windows): 尝试 Recycle your application pool(windows)

另一个可能的问题

如果您将 WordPress 与您的网站一起使用,您的某个插件可能会导致此问题。尝试禁用和启用所有这些并一次启用它们以查看它们是否导致了问题。

故障排除和预防:

确保您有足够的硬盘驱动器 space 每当您加载大型视频时,您就不会得到 503 ERROR

希望这对您有所帮助,我希望这能解决您的问题。

注意:您的错误日志中没有显示任何内容,因为本质上没有真正的错误。正如您在上面的解决方案中看到的那样,代码没有出错。

我发现我的 PHP 超时了。我的 php.ini 文件的 max_execution_time600(5 分钟),所以当我将 max_execution_time 更改为 -1 时,它解决了问题。