PHP:Magento:Cron job throw"无效回调"例外

时间:2014-06-01 10:59:53

标签: php magento cron

好的,所以这让我在过去的4个小时里疯狂了。我想在Magento上运行一个cronjob。这是我的相关目录结构:

|app
   |code
      |local
         |MOST
            |Wallet
                |etc
                   |config.xml
                |Model
                   |Cron.php

和我的config.xml一样

<?xml version="1.0"?>
<config>
  <modules>
    <MOST_Wallet>
      <version>0.1.0</version>
    </MOST_Wallet>
  </modules>

  <global>
    <helpers>
      <wallet>
        <class>MOST_Wallet_Helper</class>
      </wallet>
    </helpers>

    <models>
        <wallet>
            <class>MOST_Wallet_Model</class>        
        </wallet>
    </models>
  </global>

  <crontab>
        <jobs>
            <most_wallet>
                <schedule>
                    <cron_expr>* * * * *</cron_expr>
                </schedule>
                <run>
                    <model>MOST_Wallet/cron::updateWallet</model>
                </run>
            </most_wallet>
        </jobs>
    </crontab>
</config> 

文件Cron.php存在并且其中包含updateWallet方法,检查拼写错误:)

cron没有启用,但这是不相关的,因为现在我正在尝试通过直接打开它来使cron.php执行我的脚本manualy。这种测试方法可行,因为所有其他cron任务似乎都运行良好。

现在,cron作业失败了。经过一些搜索后,我发现了正在抛出的错误。

警告:include(Mage / MOST / Wallet / Model / Cron.php):无法打开流:第93行/var/www/magento_test/lib/Varien/Autoload.php中没有此类文件或目录

由于某些原因,你们可以看到Magento尝试从Mage文件夹而不是从本地文件夹加载我的Cron类。这会导致Cron Observer抛出“无效回调”异常。

如果有人知道可能导致这种情况的原因,我会很高兴。

修改

Dushyant Joshi说配置应该是:

<config>

---
<crontab>
        <jobs>
            <most_wallet>
                <schedule>
                    <cron_expr>* * * * *</cron_expr>
                </schedule>
                <run>
                    <model>wallet/cron::updateWallet</model><!-- change here -->
                </run>
            </most_wallet>
        </jobs>
</crontab>

该错误也是MOST_Wallet_Model_Cron类名称中的错字。毕竟Typos确实是最糟糕的错误。

干杯。

1 个答案:

答案 0 :(得分:0)

按如下方式更改您的代码。

<config>

---
    <crontab>
            <jobs>
                <most_wallet>
                    <schedule>
                        <cron_expr>* * * * *</cron_expr>
                    </schedule>
                    <run>
                        <model>wallet/cron::updateWallet</model><!-- change here -->
                    </run>
                </most_wallet>
            </jobs>
    </crontab>
</config>

刷新缓存然后检查