如何访问Zend Framework中使用守护我的模型(How do I Access my Mod

2019-07-29 19:48发布

我的工作是使用项目Phirehose收集和使用Twitter的流API。 所述Phirehose文库被设计成从所述命令行运行,优选作为后台进程或计划作业。

我创建了一个守护进程,并把它放在库文件夹。 bootstrap.php中已经更新到自动加载自定义库。 因此,应用程序本身没有问题,看到我的守护进程。

我的问题是如何将它正确地与Zend框架集成。 我需要能够直接调用后台程序文件在命令行或使用工具,如启动新贵 ,但在这样做了Zend应用程序不加载,这意味着我没有访问我的模型。

我可以创建一个控制器来启动它,但我不希望添加某人能够控制从一个网络接口守护程序的安全问题。 我也可以写PDO手动连接到数据库,但我试图避免缩放的原因。 我宁愿所有的数据库连接数据驻留在的application.ini。

有没有一种方法,我的守护类中,初始化我的Zend Framework的应用程序,这样我可以使用的模型?

Answer 1:

这个例子演示了要如何进行使用Zend_Queue后台任务。 在这个特殊的例子中,我产生在使用Zend_Queue和背景的cronjob发票,我Zend_Queue被初始化和引导注册。

创建工作,为my_job来源是在这里 :

class My_Job_SendInvoice extends My_Job
{
    protected $_invoiceId = null;

    public function __construct(Zend_Queue $queue, array $options = null)
    {
        if (is_array($options)) {
            $this->setOptions($options);
        }

        parent::__construct($queue);
    }

    public function job()
    {
        $filename = InvoiceTable::getInstance()
            ->generateInvoice($this->_invoiceId);

        return is_file($filename);
    }
}

注册工作,地方您的服务或模型中:

$backgroundJob = new My_Job_SendInvoice(Zend_Registry::get('queue'), array(
    'invoiceId' => $invoiceId
));
$backgroundJob->execute();

创建背景脚本:

defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/..'));

// temp, environment should be specified prior execution
define('APPLICATION_ENV', 'development');

set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'),
    get_include_path(),
)));


require_once 'Zend/Application.php';

$application = new Zend_Application(
    APPLICATION_ENV,
    APPLICATION_PATH . '/configs/application.ini'
);

$application->bootstrap();

/* @var $queue Zend_Queue */
$queue    = Zend_Registry::get('queue');
$messages = $queue->receive(5);

foreach ($messages as $i => $message) {
    /* @var $job My_Job */
    $job = unserialize($message->body);
    if ($job->job()) {
        $queue->deleteMessage($message);
    }
}


文章来源: How do I Access my Models using a Daemon in Zend Framework