簡體   English   中英

Resque找不到作業類ZF2命名空間

[英]Resque could not find job class ZF2 namespaces

嘗試在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

編輯:我放棄使用Resque,但下面是關於它如何工作的建議。我最終使用SlmQueue代替了https://github.com/juriansluiman/SlmQueue

根據ZF2 github社區,應該執行以下操作:

您的APP_INCLUDE環境var是否不應該包含作曲家的init_autoloader.php的路徑? 僅包括autoloader類是不夠的,因為您沒有在任何地方配置和注冊autoloader。

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運行腳本的路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM