2

Redis でサポートされている PHP-Resque プロジェクトhttps://github.com/chrisboulton/php-resqueを ZF2 プロジェクト内から使用しようとしています。(具体的には敏捷性)

私が問題を抱えているのは、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を使用することになりました

ZF2 github コミュニティによると、次のことを行う必要があります。

APP_INCLUDE環境変数に composer へのパスを含めるべきではありません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 に答える