2

尝试在 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
4

1 回答 1

0

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

根据 ZF2 github 社区,应执行以下操作:

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

YMMV,但是我将 ZF2 应用程序集成到 Resque 中所做的是创建一个单独的入口点脚本,该脚本在 Resque 工作人员的上下文中初始化 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 运行脚本的路径。

于 2014-10-29T20:51:43.077 回答