Resque找不到作业类ZF2名称空间

时间:2014-10-26 03:19:49

标签: zend-framework2 apigility php-resque

尝试在ZF2项目中使用Redis支持的PHP-Resque项目https://github.com/chrisboulton/php-resque。 (具体要求)

我遇到的麻烦是将ZF2命名空间和类

组合在一起

例如:

控制器

    //Enqueue a worker

    $args = array(
        'name' => 'EMCP'
    );
    Resque::enqueue('default', 'phpresque\\V1\\Model\\MyResqueJob', $args);

MyResqueJob类

namespace phpresque\V1\Model;

class MyResqueJob
{


    public function perform()
    {
        // Work work work
        echo "helloWorld";
    }
}

resque给出的错误消息:

 ubuntu@/zf2projectname/vendor/chrisboulton/php-resque$ QUEUE=* APP_INCLUDE=/zf2projectname/vendor/autoload.php VVERBOSE=1 php resque.php 

** [03:01:37 2014-10-26] Sleeping for 5
** [03:01:42 2014-10-26] Checking default
** [03:01:42 2014-10-26] Found job on default
** [03:01:42 2014-10-26] got (Job{default} | ID: 38fa104b11de81731c15ba9c2f1853ab | phpresque\V1\Model\MyResqueJob | [{"name":"EMCP"}])
** [03:01:42 2014-10-26] Forked 30642 at 2014-10-26 03:01:42
** [03:01:42 2014-10-26] Processing default since 2014-10-26 03:01:42
** [03:01:42 2014-10-26] (Job{default} | ID: 38fa104b11de81731c15ba9c2f1853ab | phpresque\V1\Model\MyResqueJob | [{"name":"EMCP"}]) failed: Could not find job class phpresque\V1\Model\MyResqueJob.
** [03:01:42 2014-10-26] Checking default

1 个答案:

答案 0 :(得分:0)

编辑:我放弃使用Resque,但下面是关于它如何工作的建议..我最后使用SlmQueue而不是https://github.com/juriansluiman/SlmQueue

根据ZF2 github社区,应该做以下事情:

您的APP_INCLUDE环境var不应包含作曲家init_autoloader.php的路径吗?仅包括自动加载器类是不够的,因为您没有在任何地方配置和注册自动加载器。

YMMV,但我将ZF2应用程序集成到Resque中所做的就是创建一个单独的入口点脚本,在Resque worker的上下文中初始化ZF2应用程序:

<?php
// resque_context.php

require_once 'vendor/autoload.php';

$application = \Zend\Mvc\Application::init(include 'config/application.config.php');
$config = $application->getServiceManager()->get('config');

通过APP_INCLUDE环境变量提供Resque运行脚本的路径。