-->

什么是安装和使用PHP-resque的正确方法?(What is the proper way to

2019-06-26 18:47发布

我试图使用PHP-resque排队,我的服务器上执行的ffmpeg转换。 我大致明白它应该如何工作,但我有一些麻烦的详细资料,并没有发现任何教程。 具体地讲,我不明白,我应该把我的作业类,以及如何给类我的工人,开始了我的工人。 该读我只是说“让您的应用程序正在进行中还包括告诉工人的作业类,方法是自动加载磁带机或包括它们的方法。”

希望有人可以勾勒出使用PHP-resque的整体结构。

Answer 1:

你可以把你想要你的工作类。 这将取决于你的应用程序结构。

如何创建一个作业类

例如,假设类VideoConversion ,用于ffmpeg的转换。

class VideoConversion {

    public function perform() {
        // The code for video conversion here
    }

}

在主应用程序,使用PHP-resque之前,让我们假设你有类似的东西

public function uploadVideo() {
    // Upload and move the video to a temp folder
    // Convert the video
}

而你要排队的“转换视频”部分。 我们只是把它排入到convert队列:

public function uploadVideo() {
    // Upload and move the video to a temp folder
    // Let's suppose you need to convert a 'source video' to a 'destination video'
    Resque::enqueue('convert', 'VideoConversion', array('origine-video.avi', 'destination-video.avi'));
}

当排队的工作,我们所经历的路径的源和目标视频对VideoConversion类。 你可以通过其他的说法,这将取决于你的VideoConversion类是如何写的。

然后工人将轮询convert队列,并执行VideoConversion工作。 什么工人将要做的就是实例化VideoConversion类,并执行perform()方法。

的作业参数( array('origine-video.avi', 'destination-video.avi')与排队作业时第三个参数Resque::enqueue ,将可在内部perform()方法通过$this->args

# VideoConversion.php
class VideoConversion
{
    public function perform() {
    // $this->args == array('origine-video.avi', 'destination-video.avi');
    // Convert the video
}

寻找你的作业类

VideoConversion类可以在任何地方放,但是你必须告诉你的员工在哪里可以找到它。 有多种方法可以做到这一点

把你的作业班在include_path

在你的.htaccess或者Apache的配置,添加包含所有作业类的包括路径中。 你的员工会自动找到它们。

使用这种方法的主要问题是,你的所有作业类必须放在同一个文件夹,你的所有工作类是随处可见。

告诉每个工人在哪里可以找到你的工作类

当启动工人,使用APP_INCLUDE参数指向就业班“自动加载”。

APP_INCLUDE=/path/to/autoloader.php QUEUE=convert php resque.php

上面的命令将开始一个新的工作,轮询队列命名的convert 。 我们还传递文件/path/to/autoloader.php给工人。 ( 见这里学习到启动工作 )

从技术上讲,工人将包括与该文件include '/path/to/autoloader.php';

然后,您可以告诉工人们如何找到你的工作类:

使用基本包括

在“/path/to/autoloader.php”:

include /path/to/VideoConversion.php
include /path/to/anotherClass.php
...

使用自动加载磁带机

使用PHP自动加载器加载你的作业类。

使用set_include_path()

set_include_path('path/to/job');

这样一来,你的工作是在include_path只为这名工人。

关闭思维

APP_INCLUDE被绑定到你开始的工人。 如果你开始另一名工人,使用APP_INCLUDE一次。 您可以使用不同的文件每个工人。

你也可以设计自己的作业类执行多个作业。 有一个教程解释如何做到这一点。 它从队列系统对如何使用和实现它的基本覆盖。

如果它仍然不够,来看看resque文档。 PHP-resque API是完全一样的。 唯一的区别是Resque作业类是用Ruby编写的,而PHP-resque的一个是在PHP。



Answer 2:

你好请查看以下有关如何使用resque与尔康教程。 http://www.mehuldoshi.in/background-jobs-phalcon-resque/



文章来源: What is the proper way to setup and use php-resque?
标签: php resque