Проблема с запуском задачи по cron

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
#1 Barmalei
  • Группа: Пользователь
  • Сообщений: 3
  • Регистрация: 20.03.2012

  20.03.2012 10:30

Доброго времени суток!

Возникла проблема следующего характера. Мой модуль лежит в директории app/code/local/Abc/MyModule. В config.xml прописана работа для cron:
<?xml version="1.0"?>
<config>
	<modules>
		<Abc_MyModule>
			<version>0.1.0</version>
		</Abc_MyModule>
	</modules>
...
	<crontab>
		<jobs>
			<mymodule_sendcard>
				<schedule>
					<cron_expr> */1 * * * * </cron_expr>
				</schedule>
				<run>
					<model>abc_myModule/type_observer::sendCard</model>
				</run>
			</mymodule_sendcard>
		</jobs>
	</crontab>
</config>

В файле модели app/code/local/Abc/MyModule/Model/Type/Observer.php должна выполняться функция:
<?php
class Abc_MyModule_Model_Type_Observer extends Mage_Core_Model_Abstract
{
    protected function _construct()
    {
        parent::_construct();
    }

    public function sendCard(Varien_Event_Observer $observer)
    {
        Mage::log('!!!! sendCard');
        return $this;
    }
}

Но этого не происходит. В логах появляются следующие ошибки
2012-03-20T11:20:34+04:00 ERR (3): Warning: Df_Core_Autoload::autoload(Mage\Abc\MyModule\Model\Type\Observer.php) [<a href='df-core-autoload.autoload'>df-core-autoload.autoload</a>]: failed to open stream: No such file or directory  in D:\xampp\htdocs\mysite_dev\app\code\local\Df\Core\Autoload.php on line 33
2012-03-20T11:20:34+04:00 ERR (3): Warning: Df_Core_Autoload::autoload(Mage\Abc\MyModule\Model\Type\Observer.php) [<a href='df-core-autoload.autoload'>df-core-autoload.autoload</a>]: failed to open stream: No such file or directory  in D:\xampp\htdocs\mysite_dev\app\code\local\Df\Core\Autoload.php on line 33
2012-03-20T11:20:34+04:00 ERR (3): Warning: Df_Core_Autoload::autoload() [<a href='function.include'>function.include</a>]: Failed opening 'Mage\Abc\MyModule\Model\Type\Observer.php' for inclusion (include_path='D:\xampp\htdocs\mysite_dev\app\code\local;D:\xampp\htdocs\mysite_dev\app\code\community;D:\xampp\htdocs\mysite_dev\app\code\core;D:\xampp\htdocs\mysite_dev\lib;.;D:\xampp\php\PEAR;D:\xampp\htdocs\mysite_dev\app\code\local\Df\Core\lib;D:\xampp\htdocs\mysite_dev\app\code\local\Df\Pel\lib;D:\xampp\htdocs\mysite_dev\app\code\local\Df\Zf\lib')  in D:\xampp\htdocs\mysite_dev\app\code\local\Df\Core\Autoload.php on line 33
2012-03-20T11:20:34+04:00 ERR (3): Warning: include(Mage\Abc\MyModule\Model\Type\Observer.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory  in D:\xampp\htdocs\mysite_dev\lib\Varien\Autoload.php on line 93
2012-03-20T11:20:34+04:00 ERR (3): Warning: include(Mage\Abc\MyModule\Model\Type\Observer.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory  in D:\xampp\htdocs\mysite_dev\lib\Varien\Autoload.php on line 93
2012-03-20T11:20:34+04:00 ERR (3): Warning: include() [<a href='function.include'>function.include</a>]: Failed opening 'Mage\Abc\MyModule\Model\Type\Observer.php' for inclusion (include_path='D:\xampp\htdocs\mysite_dev\app\code\local;D:\xampp\htdocs\mysite_dev\app\code\community;D:\xampp\htdocs\mysite_dev\app\code\core;D:\xampp\htdocs\mysite_dev\lib;.;D:\xampp\php\PEAR;D:\xampp\htdocs\mysite_dev\app\code\local\Df\Core\lib;D:\xampp\htdocs\mysite_dev\app\code\local\Df\Pel\lib;D:\xampp\htdocs\mysite_dev\app\code\local\Df\Zf\lib')  in D:\xampp\htdocs\mysite_dev\lib\Varien\Autoload.php on line 93

То есть в каком-то моменте добавляется Mage перед путем к файлу, и модель не находится. Не могли бы Вы подсказать, как можно победить эту проблему? Спасибо.

#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8885
  • Регистрация: 20.02.2010

20.03.2012 10:38

Опубликуйте полностью метафайл config.xml модуля.

#3 Barmalei
  • Группа: Пользователь
  • Сообщений: 3
  • Регистрация: 20.03.2012

20.03.2012 10:45

Метафайл config.xml модуля
<?xml version="1.0"?>
<config>
	<modules>
		<Abc_MyModule>
			<version>0.1.0</version>
		</Abc_MyModule>
	</modules>

	<global>
		<models>
			<mymodule>
				<class>Abc_MyModule_Model</class>
				<resourceModel>mymodule_mysql4</resourceModel>
			</mymodule>
			<mymodule_mysql4>
				<class>Abc_MyModule_Model_Mysql4</class>
				<entities>
					<log>
						<table>mymodule_log</table>
					</log>
				</entities>
			</mymodule_mysql4>
		</models>

		<resources>
			<mymodule_setup>
				<setup>
					<module>Abc_MyModule</module>
				</setup>
				<connection>
					<use>core_setup</use>
				</connection>
			</mymodule_setup>
			<mymodule_write>
				<connection>
					<use>core_write</use>
				</connection>
			</mymodule_write>
			<mymodule_read>
				<connection>
					<use>core_read</use>
				</connection>
			</mymodule_read>
		</resources>

		<helpers>
			<mymodule>
				<class>Abc_MyModule_Helper</class>
			</mymodule>
		</helpers>

		<events>
			<sales_order_save_after>
				<observers>
					<abc_sales_order_save_after>
						<type>singleton</type>
						<class>Abc_MyModule_Model_Type_Observer</class>
						<method>orderSaveAfter</method>
					</abc_sales_order_save_after>
				</observers>
			</sales_order_save_after>
		</events>

	</global>

	<adminhtml>
		<translate>
			<modules>
				<Abc_MyModule>
					<files>
						<default>Abc_MyModule.csv</default>
					</files>
				</Abc_MyModule>
			</modules>
		</translate>
	</adminhtml>

	<crontab>
		<jobs>
			<mymodule_sendcard>
				<schedule>
					<cron_expr> */1 * * * * </cron_expr>
				</schedule>
				<run>
					<model>abc_myModule/type_observer::sendCard</model>
				</run>
			</mymodule_sendcard>
		</jobs>
	</crontab>
</config>


#4 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8885
  • Регистрация: 20.02.2010

20.03.2012 10:47

Внутри тегов <models> и <helpers> описание неверно.
Просто возьмите нормальный сторонний модуль и сделайте внимательно, как там.

#5 Barmalei
  • Группа: Пользователь
  • Сообщений: 3
  • Регистрация: 20.03.2012

20.03.2012 11:05

Действительно, оказалось все просто. Спасибо, что указали куда смотреть :)
Оставляю кусок кода для тех, кто так же столкнется с похожей проблемой. Смотрите, сравнивайте с предыдущей версией, анализируйте:
<?xml version="1.0"?>
<config>
	<modules>
		<Abc_MyModule>
			<version>0.1.0</version>
		</Abc_MyModule>
	</modules>

	<global>
		<models>
			<abc_mymodule>
				<class>Abc_MyModule_Model</class>
				<resourceModel>abc_mymodule_mysql4</resourceModel>
			</abc_mymodule>
		</models>
	
	</global>

	<crontab>
		<jobs>
			<mymodule_sendcard>
				<schedule>
					<cron_expr> */1 * * * * </cron_expr>
				</schedule>
				<run>
					<model>abc_mymodule/type_observer::sendCard</model>
				</run>
			</mymodule_sendcard>
		</jobs>
	</crontab>
</config>


Поделиться темой: