2013-08-11 1 views
0

Я использую beanstalkd для работы в очереди.Отдельный скрипт php, который выполняет задания из очереди beanstalkd. Нужен доступ к приложению cakephp

У меня есть PHP скрипт, написанный внутри моего app/Lib/Queue/Beanstalk/workers/DownloadFileWorker.php

<?php 
require_once(dirname(__DIR__) . DIRECTORY_SEPARATOR . 'config.php'); 
class DownloadS3FilesWorker extends PHPQueue\Worker 
{ 
/** 
* @var \PHPQueue\Backend\FS 
*/ 
    static private $dataSource; 
    public $factory = null; 
    private $queueConfig = array(); 
    private $queueBackend = 'Beanstalkd'; 

    public function __construct() 
    { 
     parent::__construct(); 
     $this->queueConfig = EPubConfig::getConfig($this->queueBackend); 
     self::$dataSource = \PHPQueue\Base::backendFactory($this->queueBackend, $this->queueConfig); 
    } 

    /** 
    * @param \PHPQueue\Job $jobObject 
    */ 
    public function runJob($jobObject) 
    { 
     parent::runJob($jobObject); 
     $jobData = $jobObject->data; 
     App::uses('FileFactory', 'Lib/File'); 
     $this->factory = new FileFactory($jobData); 
     $this->factory->downloadAllFiles(); 
     $this->result_data = $jobData; 
    } 
} 

Я получаю следующее сообщение об ошибке.

PHP Fatal error: Class 'App' not found in /var/virtual/someapp/Lib/Queue/Beanstalk/workers/DownloadFileWorker.php on line 27 

FileFactory сам будет использовать много других классов, связанных с Cake.

+0

В последнее время я видел много людей, которые действительно прыгают на RabbitMQ. Даже MarkStory, основной разработчик CakePHP, рассказывал об этом на 2011 CakeFest: https://github.com/markstory/cakefest-rabbitmq Возможно, там больше документации и поддержки сообщества. Просто мысль, и удачи! – alairock

+0

спасибо @alairock Я посмотрю на это ближе. Просто быстрый вопрос, который вы пробовали раньше? –

+0

@alairock, рассмотрев это http://www.quora.com/Beanstalk-work-queue/What-are-the-advantages-and-disadvantages-of-Beanstalkd-as-a-work-queue Я думаю, что соглашусь на beanstalk, так как я действительно использую workqueue, а не очередь сообщений –

ответ

0

Написал как оболочка под консоль/команда.

Проблема решена!