0

我已经为 Magento 设置了我的 cronjob,使其每两个小时运行一次,这是我的主机可以设置的最快速度。但是,在我真正进入主机的控制面板并单击特定 cronjob 的“运行”按钮之前,不会发送时事通讯。

我做错了什么?我的 cron 路径设置为:/bin/sh /usr/www/users/FTP_USER/cron.sh

4

3 回答 3

1

这是因为事件观察者是根据上下文(adminhtml、frontend 或在您的情况下为 crontab)加载的。发送时事通讯的观察者不在 crontab 列表中,因此它无法发送电子邮件。

见这篇文章:http ://www.aschroder.com/2010/01/magento-events-explained-and-a-few-gotchas-avoided/

于 2012-10-15T13:43:50.447 回答
0

我想这很可能是一种或其他形式的权限/路径问题。当您通过单击控制面板中的某些内容手动触发事件时,它可能会以 Apache 用户(www-data 或等效项,具体取决于平台)身份运行。cron 很可能会以与此不同的用户身份运行。

假设您指的是核心newletters cron ,相对包含路径不正确Mage_Newsletter_Model_Observer::scheduledSend不太可能有任何问题。cwd这留下了最可能的罪魁祸首 a.) cron 用户对您的 cron.sh 没有执行权限,b.) cron 用户无权访问服务器上的邮件应用程序,因为它不包含在用户路径。

于 2012-10-01T11:42:26.650 回答
0

以我的经验, cron.sh 脚本还没有达到它。因此,我只运行 cron.php 。这需要使用足够的 RAM 和合理的超时正确设置 php cli。

在您的 crontab 中尝试:

 * * * * * /usr/bin/php /home/USER/public_html/cron.php >> /home/USER/public_html/var/log/cron.log 2>&1

我还在 var/log/cron.php 中保留了一个日志文件,以便我可以看到在 cron 作业期间发生的错误。

于 2012-10-01T14:19:13.253 回答