首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Magento设立CRON职位

问在Magento设立CRON职位
EN

Stack Overflow用户
提问于 2011-04-13 03:21:35
回答 3查看 19.5K关注 0票数 1

有很多教程用于设置cron,我认为我做得很正确,但出于某种原因,它不起作用。我还创建了一个控制器类来测试模型,并且它正在正常工作。

这是我的config.xml:

代码语言:javascript
复制
<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文件是:

代码语言:javascript
复制
<?php
class VPS_Export_Model_Observer
{
    public function exportProducts()
    {
        echo "VPS Export Products called!";
        Mage::Log("exportProducts called!");
    }
}
?>

我的测试IndexController.php文件是:

代码语言:javascript
复制
<?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,我不会发现任何错误,但它似乎仍然什么也不做。

有什么想法吗?

EN

回答 3

Stack Overflow用户

发布于 2011-04-13 13:40:58

据我所知,magento的cron系统工作在两个阶段:

它检查模块(cron_schedule)

  • it,以找出cron必须运行的方法,并将它们插入数据库,从该表获取信息,并运行与实际时间匹配的scheduled_at列的方法。。

正如您所说的,您的cron_schedule表中有条目,第一阶段是可以的。

因此,为了检查您的cron是否执行良好,您实际上必须在您的服务器中设置一个cron作业,如果您在本地工作,这将是您的计算机。

事实上,它在ubuntu上非常简单,我想它在windows上会更复杂,但是(再次猜测)不是不可能的。

或者可能每5分钟刷新一次指向cron.php文件的浏览器(就像您在config.xml中配置的那样),但是设置一个cronjob会更有效:)

希望这有帮助

编辑:如果它对您有帮助的话,那么这里的就像我的cronjob一样:

代码语言:javascript
复制
*/5 * * * * wget -q http://magento.local/cron.php
票数 4
EN

Stack Overflow用户

发布于 2012-04-16 02:54:54

运行cron脚本的性能和后果可能存在根本差异,这取决于它是通过本地调用还是通过web服务器调用。

一个重要的区别是,当您使用APC操作码缓存的PHP (这是一个非常好的想法)。根据文档,从命令行访问PHP将清除缓存,这可能不是您真正希望每5分钟发生一次的事情!

票数 0
EN

Stack Overflow用户

发布于 2013-05-27 06:15:02

我知道这是很久以后的事了,但我应该扩大一点。我有点说错了,因为在启用APC的命令行中运行PHP时使用了它自己的私有缓存。如果您通过web服务器运行cron作业,那么它的现有缓存是可用的,并添加到。

这将存储相关的东西,从跑到跑。在命令行作业中使用APC可能是一个障碍,因为您可能要做的就是加载缓存,然后删除它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5644037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档