持续运行 PHP 脚本等待视频转码

发布于 2024-10-22 04:32:23 字数 310 浏览 3 评论 0原文

我正在制作一个转码服务器,它使用 FFMPEG 将视频转换为 flv。用户上传视频后,视频将在亚马逊简单队列服务中排队等待处理。系统是linux ubuntu。

我想知道是否可以连续运行多个 PHP 脚本(下载排队文件、处理下载的文件等),而不是每 1 分钟运行一次 CRON。他们每个人都有自己的队列,每 10 秒左右就会读取一次以寻找新任务。

我的问题是:

如何检测脚本是否已经在运行?我每 1 分钟运行一次 CRON,如果其中一个程序无法运行,我会再次加载它。类似的事情在linux上是如何完成的? PID 文件?

感谢您的帮助, 伊安

I'm making a transcoding server which uses FFMPEG to convert videos to flv. After user uploads a video it's queued for processing in amazon Simple Queue Service. System is linux ubuntu.

Instead of running CRON each 1min I wonder if it would be possible to continously run several PHP scripts (dowload queued files, process downloaded etc). Each of them would have its own queue which would be read every 10s or so looking for new tasks.

My question is:

How to detect if the script is already running? I'd run CRON each 1min and if one of the programs would not be running I'd load it again. How stuff like that is done on linux? PID files?

thanks for help,
ian

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

甜点 2024-10-29 04:32:25

是的,您可以使用 PID 文件
或者临时表,或者内存缓存等,

但我确实喜欢这样:
通过 cron 运行执行视频转换的脚本,并检查进程是否终止
这个 cron 脚本获取需要从数据库或文件转换的电影

Yes, you can use PID files
Or temporary table, or memcache, e.t.c.

But I do like this:
By cron runs script that execute convert video, and it check if process is terminated or not
This cron script get movie what needs to convert from database or file

终陌 2024-10-29 04:32:25

PHP 的 PEAR 存储库有一个 System_Daemon 类,用于从 PHP 创建守护程序。我已经将它用于几个系统并取得了良好的效果。

PHP's PEAR repository has a System_Daemon class for creating daemons out of PHP. I've used it for a couple systems with good results.

挽心 2024-10-29 04:32:25

I've created a similar script specifically for this issue

Check: https://github.com/SirNarsh/EasyCron
The idea is to save PID of the script to a file, then check if the process is running by checking /proc/PID existence

内心激荡 2024-10-29 04:32:23

我可能会选择基于 gearman< 的解决方案,而不是仅使用纯 PHP 来完成此操作/a> (引用wikipedia

Gearman 是一个开源应用程序
框架 [...]。
吉尔曼是
旨在分配适当的
计算机任务到多台计算机,
如此大的任务可以完成更多
快点。

由于 gearman 扩展,它与 PHP 配合得很好,并且会为您处理大部分排队的事情。

请注意,当您有更多视频需要转码时,它也会让事情变得更容易,从而更容易扩展到多个服务器。

Instead of doing this with only pure-PHP, I would probably go with a solution based on gearman (quoting wikipedia) :

Gearman is an open source application
framework [...].
Gearman is
designed to distribute appropriate
computer tasks to multiple computers,
so large tasks can be done more
quickly.

It works well with PHP, thanks to the gearman extension, and will deal with most of the queuing stuff for you.

Note that it'll also facilitate things when you have more videos to transcode, making scaling to several servers easier.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文