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]
別のディレクトリ、たとえばpublic/jobsではなくscripts/jobsからスクリプトを実行するようにcreateHttpJobを変更するにはどうすればよいですか?他にやるべきことはありますか?