use Magento\Cron\Model\Schedule; use Magento\Framework\App\Area; use Magento\Framework\App\AreaList; use Magento\Framework\App\State; use Magento\Framework\ObjectManager\ConfigLoaderInterface; use Magento\Store\Model\Store; use Magento\Store\Model\StoreManager; require "<<basedir>>/app/bootstrap.php"; if (extension_loaded("newrelic")) { newrelic_name_transaction("<<name>>"); } $omParams = $_SERVER; $omParams[StoreManager::PARAM_RUN_CODE] = 'admin'; $omParams[Store::CUSTOM_ENTRY_POINT_PARAM] = true; $bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $omParams); $objectManager = $bootstrap->getObjectManager(); $scheduleId = '<<scheduleid>>'; $state = $objectManager->get(State::class); $state->setAreaCode(Area::AREA_CRONTAB); $configLoader = $objectManager->get(ConfigLoaderInterface::class); $objectManager->configure($configLoader->load(Area::AREA_CRONTAB)); $areaList = $objectManager->get(AreaList::class); $areaList->getArea(Area::AREA_CRONTAB)->load(Area::PART_TRANSLATE); $instance = $objectManager->get("<<instance>>"); $schedule = $objectManager->get(Schedule::class)->load($scheduleId); $callback = [$instance, '<<method>>']; if (!is_callable($callback)) { $schedule->setStatus(Schedule::STATUS_ERROR); throw new \Exception( sprintf('Invalid callback: %s::%s can\'t be called', '<<instance>>', '<<method>>') ); } $jobCode = $schedule->getJobCode(); /** @var \Magento\Framework\Event\ManagerInterface $eventManager */ $eventManager = $objectManager->get(\Magento\Framework\Event\ManagerInterface::class); $eventManager->dispatch('cron_job_run', ['job_name' => "cron/<<group_id>>/$jobCode"]); call_user_func_array($callback, [$schedule]);