Zend framework zend框架中排队作业(cron作业)的目录结构

Zend framework zend框架中排队作业(cron作业)的目录结构,zend-framework,cron-task,Zend Framework,Cron Task,我在Zend Framework中发现了不少与目录结构和cron作业相关的帖子,但没有明确的答案: 我有以下代码来创建发送电子邮件的作业。只要脚本emailNotification.php位于公共目录中的/jobs下,就可以完美地工作 public function emailAction() { $request = $this->getRequest(); if ($request->isPost()) { $emailFrom = $requ

我在Zend Framework中发现了不少与目录结构和cron作业相关的帖子,但没有明确的答案:

我有以下代码来创建发送电子邮件的作业。只要脚本emailNotification.php位于公共目录中的/jobs下,就可以完美地工作

public function emailAction() {

    $request = $this->getRequest();
    if ($request->isPost()) {

        $emailFrom = $request->getPost('emailFrom');
        $messageFrom = $request->getPost('messageFrom');
        $subject = $request->getPost('Sub');
        $emailTo = $request->getPost('emailTo');

        // create a queued job
        date_default_timezone_set('UTC');            
        $q = new ZendJobQueue();
        $ts = date('Y-m-d H:i:s', time()+30);
        $id=$q->createHttpJob('jobs/emailNotification.php',array('emailFrom'=>$emailFrom,
                'messageFrom'=>$messageFrom,'subject'=>$subject,
                'emailTo'=>$emailTo),
                array('name'=>'email notification using a single job execution scheduled to run after 30 seconds','schedule_time'=>$ts));

        if(!$id)
            $this->_helper->json(array('status' => 'success', 'message' => "Queued job didn't work."));

        $this->_helper->json(array('status' => 'success', 'message' => "Email sent successfully."));
    } // request->isPost()

}// function emailAction
我的目录结构是ZF创建的默认结构:

  [MyProject]
     [application]
     [data]
     [docs]
     [library]
     [public]
        index.php
     [scripts]

如何修改createHttpJob以从不同的目录运行脚本,例如scripts/jobs而不是public/jobs?还有什么我应该做的吗?

这实际上取决于您如何调用cron作业,以及在脚本开始时进行了多少引导(如果有的话)。我会将您的代码更改为:

$id=$q->createHttpJob(APPLICATION_PATH.'/../scripts/jobs/emailNotification.php', [...]

首先,您需要做的就是确保在cron脚本中设置应用程序路径。

不起作用:下面是我实现的示例。cron脚本非常简单:只是一个函数。