1

我想在我的 codeigniter 项目中使用 php_resque( https://github.com/chrisboulton/php-resque )。这是创建新工作的“测试”功能。

public function test() {
    $this->load->library('My_Job');

    Resque::setBackend('localhost:6379');

    $args = array(
        'name' => 'Chris'
    );

    $token = Resque::enqueue('default', 'My_Job', $args, true);

    $status = new Resque_Job_Status($token);

    Resque::dequeue('default', ['My_Job' => $token]);
}

这是工人库代码

putenv("VVERBOSE=1");
putenv("LOGGING=1");
putenv("QUEUE=*");
class My_Job {

    public function perform($args) {

        $this->load->model('M_sms');
        $this->M_sms->ins_msg();
    }

}

当我调用'test'(localhost/project_folder/controller/test)时,worker(My_Job.php)中的'perform'函数没有加载。工作状态是 1。这里有什么问题?

编辑

当我使用以下代码进行调试时

VERBOSE=1 QUEUE=default php resque.php

它说找不到工作类

4

2 回答 2

1

在我的代码中,问题是,工人不知道工作类的位置。正如我上面提到的,我正在获得状态 1 (STATUS_WAITING),这意味着“作业仍在排队”。这发生在我身上,因为我试图将作业类作为库加载到我的 codeigniter 项目中。

$this->load->library('My_Job');

现在我根据本教程 Programe Veryday更改了我的代码

本教程逐步解释设置php-resque的过程

于 2017-05-31T15:27:24.567 回答
0

你必须包括你的应用程序自动加载器:

QUEUE=* VVERBOSE=1 REDIS_BACKEND=localhost:9999 APP_INCLUDE=./path/to/loader.php php resque.php

http://kamisama.me/2012/10/12/background-jobs-with-php-and-resque-part-4-managing-worker/

于 2017-05-29T10:31:39.410 回答