【问题标题】:How to Run a PHP file when files exist in directory - Encoding Server当目录中存在文件时如何运行 PHP 文件 - 编码服务器
【发布时间】:2012-08-23 02:03:44
【问题描述】:

我正在制作一个编码服务器,需要一些帮助

我有一个名为 Uploaded 的目录和一个名为 videoConverter.php 的 php 文件,当它运行时,它有一个循环,将转换上传目录中的所有视频文件,并将完成的文件通过 FTP 传输到流媒体服务器。

脚本没有问题,但问题是循环结束后,它不会转换循环结束后上传的任何新文件。当文件上传到上传目录时,我需要找到执行 php 文件或脚本。

我正在考虑使用 cron 作业并每秒运行 php 文件,但它不会在脚本已经运行时继续运行吗?

有人知道解决这个问题的好方法吗?

【问题讨论】:

    标签: php file encoding cron video-encoding


    【解决方案1】:

    我不会坚持使用 PHP 来完成这样的任务,它只是编码工具和文件本身之间的低效层 - 你需要一个事件驱动的工具,而不是脚本语言。

    我最好查看inotify 以了解上传文件夹中的本地更改,然后随时处理新文件。

    我的第一个想法是在 Node.js 环境中使用 inotify wrapper

    • 每当出现新文件时,都会调用encode(newFile)
    • 编码过程完成后,pushToFTP(encodedFile) 回调被触发并开始传输。

    奖励,由于异步 js 架构,较小的文件不必等到整个作业完成。

    【讨论】:

    • 我完全同意你的看法,我不想坚持使用 PHP,我正在使用它,因为我最了解这种语言..目前我需要完成这件事,但我会调查的。我正在使用带有 ffmpeg 的 Ubuntu 服务器进行编码。所以你建议我使用 Node.js 和 inotify 来完成这个任务?
    • 是的,在您设法在控制台中记录“嘿,文件 foo.bar 添加到监视文件夹”之后,只需编写几个函数即可 - 同时您还学到了一件好事。
    • 好的,非常感谢您的帮助,如果我对 node 有任何疑问,我会提出一个新问题以帮助用户群受益,但会在此处删除 URL。
    【解决方案2】:

    你可以这样做:

    1. 脚本从 cron 中唤醒,检查“pid”文件。
    2. 如果找到 pid 文件,则关闭
    3. 如果找不到 pid 文件,则将其 pid 写入当前目录。
    4. 然后开始处理视频文件。
    5. 完成后,或出现任何必须退出的故障时,它会删除/取消链接 pid 文件。

    现在,如果进程失败并且从不取消失败的链接,这可能会产生问题,不会运行其他作业。

    您可以做的另一件事是执行引导脚本 exec('ps aux | grep VIDEO_SCRIPTNAME'); (或其他),如果您看到脚本已经在运行,请不要执行视频转换脚本。在该示例中,您将有两个文件,一个由 cron 运行并检查当前是否正在进行视频转换的引导程序,以及第二个文件,即实际执行工作的文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-06
      • 2012-12-10
      • 1970-01-01
      • 2016-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多