php - 将文件发送给 gearman worker

标签 php gearman

我目前正在将网页的视频转换部分(有点像 youtube,用户上传视频,我们将它们转换为 flv/mp4)分离到不同的服务器。我已经让系统运行 gearman在同一台机器上。因此,当用户将视频文件上传到服务器 A 时,同一服务器 A 上的 gearman 工作人员会选择该文件。

现在我将worker移到了服务器B上。所以服务器B上的worker需要访问服务器A上上传的文件。目前我使用SCP将文件从A复制到B然后进行处理。这种方法有效,但我觉得应该有一种更干净的方法来做到这一点,但我还没有找到任何有关向 gearman 工作人员发送文件(或大文件)的信息。您将如何解决这个问题?

客户端最好将视频文件作为启动后台作业的命令的一部分发送,这样我就不必担心文件实际上来自工作人员内部的位置。这样我就可以轻松添加更多转换服务器。

我正在为我的网页和工作人员使用 PHP(使用 Gearman extension )。

最佳答案

正如评论中所建议的,拥有共享 FS 是实现此目的的(通常)方法,并且只需在 gearman 的作业请求中传递路径即可。 Gearman 不太适合传递大量数据,因为它必须将作业的所有信息保存在内存中。它从来就不是为处理大文件的传输和分发而设计的。由于 MogileFS 最初也是由 Danga 开发的,因此根本没有必要将文件传输和处理合并到 Gearman 中(这是一件好事,有很多技术可以比 Gearman 更好地解决这个问题)。

当视频到达时,我们使用 NFS 来处理分布式工作人员,编码器将编码后的视频放回到 NFS 共享上,完成后可供公众使用。还没有出现严重的问题,NFS 很稳定,它的问题是众所周知的,并且已经针对您将看到的负载类型得到了解决。

关于php - 将文件发送给 gearman worker ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11645200/

相关文章:

php - 使用 php 针对 xsd 验证 xml 文件

php - 为什么 $_SERVER ['SERVER_ADDR' ] 无法正常工作?

php - Gearman,php 扩展问题 : Class 'GearmanWorker' not found in .。使用终端但在浏览器上工作

用于并行化非线程安全 C++ 库的 Haskell 框架

php - 高优先级齿轮工作业未被视为高优先级

php - (让进程运行直到完成,浏览器关闭后)

php - 如果 VALUES 不存在则插入

php - 我无法打开 phpmyadmin 窗口

php - 如何更新MYSQL中的特定行

php - 如何在 Windows 操作系统上安装 gearman php 扩展?