我已经为 Magento 设置了我的 cronjob,使其每两个小时运行一次,这是我的主机可以设置的最快速度。但是,在我真正进入主机的控制面板并单击特定 cronjob 的“运行”按钮之前,不会发送时事通讯。
我做错了什么?我的 cron 路径设置为:/bin/sh /usr/www/users/FTP_USER/cron.sh
这是因为事件观察者是根据上下文(adminhtml、frontend 或在您的情况下为 crontab)加载的。发送时事通讯的观察者不在 crontab 列表中,因此它无法发送电子邮件。
见这篇文章:http ://www.aschroder.com/2010/01/magento-events-explained-and-a-few-gotchas-avoided/
我想这很可能是一种或其他形式的权限/路径问题。当您通过单击控制面板中的某些内容手动触发事件时,它可能会以 Apache 用户(www-data 或等效项,具体取决于平台)身份运行。cron 很可能会以与此不同的用户身份运行。
假设您指的是核心newletters cron ,相对包含路径不正确Mage_Newsletter_Model_Observer::scheduledSend
不太可能有任何问题。cwd
这留下了最可能的罪魁祸首 a.) cron 用户对您的 cron.sh 没有执行权限,b.) cron 用户无权访问服务器上的邮件应用程序,因为它不包含在用户路径。
以我的经验, 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 作业期间发生的错误。