【发布时间】:2014-02-10 23:26:46
【问题描述】:
那里有很多设置 cron 的教程,我认为我做得正确,但由于某种原因它不起作用。我还创建了一个控制器类来测试模型并且它工作正常。
这是我的 config.xml:
<config>
<modules>
<VPS_Export>
<version>0.1.0</version>
</VPS_Export>
</modules>
<global>
<models>
<vps_export>
<class>VPS_Export_Model</class>
</vps_export>
</models>
<helpers>
<vps_export>
<class>VPS_Export_Helper</class>
</vps_export>
</helpers>
</global>
<frontend>
<routers>
<vps_export>
<use>standard</use>
<args>
<module>VPS_Export</module>
<frontName>vpsexport</frontName>
</args>
</vps_export>
</routers>
</frontend>
<crontab>
<jobs>
<vps_export>
<schedule>
<cron_expr>*/5 * * * *</cron_expr><!-- every 5 minutes -->
</schedule>
<run>
<model>vps_export/observer::exportProducts</model>
</run>
</vps_export>
</jobs>
</crontab>
</config>
我的 Observer.php 文件是:
<?php
class VPS_Export_Model_Observer
{
public function exportProducts()
{
echo "VPS Export Products called!";
Mage::Log("exportProducts called!");
}
}
?>
而我的测试 IndexController.php 文件是:
<?php
class VPS_Export_IndexController extends Mage_Core_Controller_Front_Action
{
public function indexAction()
{
echo "index action called!";
Mage::getModel('vps_export/observer')->exportProducts();
}
}
?>
如果我将浏览器指向 http://my_server/vpsexport/index,我会看到 echo 语句的正确输出,并且消息会打印到日志中,所以我知道模型是正确的配置。但是,cron 没有相同的结果。如果我手动运行 cron.php,我不会收到任何错误,但它似乎仍然没有做任何事情。
有什么想法吗?
【问题讨论】:
-
手动运行 cron 后,你的数据库中的 'cron_schedule' 表中有什么东西吗?
-
我之前不知道 cron_schedule 表。是的,表中有项目,它们似乎正在执行,但我的日志消息仍然没有进入日志。我如何测试以确保它在执行 cron 作业时实际上调用了正确的函数?