Для выполнения сложных скриптов через крон необходимо выносить их в отдельный функционал. Если ваше приложение основано на Zend Framework, то для того что бы ваш скрипт «подхватил» все зависимости приложения достаточно написать несколько строк кода:
Ниже код с пояснениями:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
<?php // Установка текущего каталога (для удобства) chdir(dirname(__DIR__)); // Автозагрузчик ZF2 require dirname(__DIR__) . '/init_autoloader.php'; // Конфигурация всего приложения $appConfig = require dirname(__DIR__) . '/config/application.config.php'; // Приложение Zf $application = \Zend\Mvc\Application::init($appConfig); // Массив всех настроек приложения $config = $application->getServiceManager()->get('config'); // Менеджер подключений к БД $entityManager = $application->getServiceManager()->get( 'doctrine.entitymanager.orm_default' ); /** * @var Doctrine\ORM\EntityManager $entityManager */ // Произвольный запрос к БД $dbQuery = $entityManager->getConnection() ->createQueryBuilder() ->select('*') ->from('users_crm','users') ->setMaxResults(15) ->execute() ->fetchAll(); |
Всё просто:
- Подключаете основной файл автозагрузки приложения
- Получаете всю конфигурацию приложения
- Инициализируете приложение
- Из объекта $application можно получить всё что вам необходимо в автономном скрипте
PS. Подобный подход может понадобится для любых действий за рамками приложения ZF но требующих кодовой базы приложения.