2013-06-21 3 views
0

Я пытаюсь запустить хроны в моем приложении мой набор вверх, как это: Моего ZEND версии приложения 1,12Zend Framework Cron для FIFO очередь

внутри моя общественность/index.php

function Mylib_init_settings($settings, $environment) 
{ 
    if (getenv('LOCAL_ENV') && file_exists($serverConfigFile = __DIR__ . '/../application/configs/' . getenv('LOCAL_ENV') . '.ini')) { 
     $settings->addOverrideFile($serverConfigFile); 
    } 
} 

define('MYLIB_APPLICATION_ENV', 'production'); 
require __DIR__ . '/../library/Mylib/Application/start.php'; 

Внутри Start.php

<?php 
use Mylib\Config; 
use Mylib\Config\Loader\SecondGeneration; 
function mylib_trigger_hook($hook, $params = array()) 
{ 
    $func = 'mylib_init_' . strtolower(trim($hook)); 
    if (function_exists($func)) { 
     call_user_func_array($func, $params); 
    } 
} 
// --------------------------------------------------------------------------------------------------------------------- 
// setup application constants 
if (getenv('SELENIUM')) { 
    defined('MYLIB_APPLICATION_ENV') 
     ?: define('MYLIB_APPLICATION_ENV', 'testing'); 
} 
// should the application be bootstrapped? 
defined('MYLIB_APPLICATION_BOOTSTRAP') 
    ?: define('MYLIB_APPLICATION_BOOTSTRAP', true); 
// should the application run? 
defined('MYLIB_APPLICATION_CREATE') 
    ?: define('MYLIB_APPLICATION_CREATE', true); 
// should the application run? 
defined('MYLIB_APPLICATION_RUN') 
    ?: define('MYLIB_APPLICATION_RUN', true); 
// maximum execution time 
defined('MYLIB_APPLICATION_TIME_LIMIT') 
    ?: define('MYLIB_APPLICATION_TIME_LIMIT', 0); 
// path to application rooth 
defined('MYLIB_APPLICATION_PATH_ROOT') 
    ?: define('MYLIB_APPLICATION_PATH_ROOT', realpath(__DIR__ . '/../../../')); 
// path to library 
defined('MYLIB_APPLICATION_PATH_LIBRARY') 
    ?: define('MYLIB_APPLICATION_PATH_LIBRARY', realpath(__DIR__ . '/../../')); 
mylib_trigger_hook('constants'); 
// --------------------------------------------------------------------------------------------------------------------- 
// limits the maximum execution time 
set_time_limit(MYLIB_APPLICATION_TIME_LIMIT); 
// --------------------------------------------------------------------------------------------------------------------- 
// determine which configuration section, and overrides to load 
$configSection = defined('MYLIB_APPLICATION_ENV') ?MYLIB_APPLICATION_ENV : null; 
$configOverride = null; 
$environmentFilename = MYLIB_APPLICATION_PATH_ROOT . '/environment'; 
if (file_exists($environmentFilename)) { 
    $ini = parse_ini_file($environmentFilename); 
    if ($ini === false) { 
     throw new \RuntimeException('Failed to parse enviroment file: ' . $environmentFilename); 
    } 
    if (!defined('MYLIB_APPLICATION_ENV')) { 
     // should have at least a config.section variable 
     if (!isset($ini['config.section'])) { 
      throw new \RuntimeException('\'config.section\' setting is missing in environment file'); 
     } 

     $configSection = $ini['config.section']; 
    } 
    if (isset($ini['config.override'])) { 
     $configOverrideFilename = MYLIB_APPLICATION_PATH_ROOT . '/application/configs/' . $ini['config.override'] . '.ini'; 
     if (!is_readable($configOverrideFilename)) { 
      throw new \RuntimeException(
       sprintf('You have provided a config override file (%s), but it is not readable', $configOverrideFilename) 
      ); 
     } else { 
      $configOverride = $configOverrideFilename; 
     } 
    } 
} 
defined('MYLIB_APPLICATION_ENV') 
    ?: define('MYLIB_APPLICATION_ENV', $configSection); 
static $allowedEnvironmnets = array(
    'production', 
    'staging', 
    'testing', 
    'development', 
); 
if (!in_array(MYLIB_APPLICATION_ENV, $allowedEnvironmnets)) { 
    throw new \RuntimeException(
     sprintf('Invalid environment %s provided. Must be either of: %s', MYLIB_APPLICATION_ENV, implode(', ', $allowedEnvironmnets)) 
    ); 
} 
macq_trigger_hook('environment', array(MYLIB_APPLICATION_ENV)); 
// --------------------------------------------------------------------------------------------------------------------- 
// set the include path 
set_include_path(MYLIB_APPLICATION_PATH_LIBRARY . PATH_SEPARATOR . get_include_path()); 
mylib_trigger_hook('includepath', array(get_include_path())); 
// --------------------------------------------------------------------------------------------------------------------- 
// enable PSR-0 autoloading 
require_once MYLIB_APPLICATION_PATH_LIBRARY . '/Zend/Loader/Autoloader.php'; 
Zend_Loader_Autoloader::getInstance() 
    ->setFallbackAutoloader(true); 
// --------------------------------------------------------------------------------------------------------------------- 
// load configuration settings, and if an override is specified, merge it 
$settings = new SecondGeneration(
    MYLIB_APPLICATION_PATH_ROOT, 
    MYLIB_APPLICATION_ENV, 
    MYLIB_APPLICATION_PATH_LIBRARY . '/MyLib/Application/configuration.ini' 
); 
if ($configOverride) { 
    $settings->addOverrideFile($configOverride); 
} 
// set up config file caching, this is a seperate cache then any application caches created! 
if (isset($ini['config.cache.enabled']) && $ini['config.cache.enabled']) { 
    if (isset($ini['config.cache.dir']) && is_writable($ini['config.cache.dir'])) { 
     $configCache = new Zend_Cache_Core(array('automatic_serialization'=>true)); 
     $backend = new Zend_Cache_Backend_File(array(
      'cache_dir' => $ini['config.cache.dir'], 
     )); 
     $configCache->setBackend($backend); 
     $settings->setCache($configCache); 
     unset($configCache, $backend); 
    } else { 
     throw new \RuntimeException(
      sprintf('Configuration cache is enabled, but no correct cache dir is specified, or the specified directory is not writable') 
     ); 
    } 
} 
// load configuration settings 
Config::load($settings); 
mylib_trigger_hook('settings', array($settings, MYLIB_APPLICATION_ENV)); 
// --------------------------------------------------------------------------------------------------------------------- 
// create application and bootstrap 
if (MYLIB_APPLICATION_CREATE) { 

    $application = new Zend_Application(Config::environment(), Config::config()); 

    macq_trigger_hook('application', array($application)); 

    if (MYLIB_APPLICATION_BOOTSTRAP) { 
     $application->bootstrap(); 

     macq_trigger_hook('bootstrap', array($application)); 
    } 
    // --------------------------------------------------------------------------------------------------------------------- 
    // run application? 
    if (MYLIB_APPLICATION_RUN) { 
     $application->run(); 
     macq_trigger_hook('run', array($application)); 
    } 

} 

То, что я сделал это:

Я следовал по следующей ссылке: http://www.magentozend.com/blog/2012/02/03/setting-up-cronjobs-for-zend-framework-envoirment/

, что я сделал это создать «хрон» папку на уровне, в котором мои папки приложения присутствуют.

Внутри папки создан файл init.php, в который я добавил свой код index.php и код start.php.

и мой файл контроллера, как например:

application/modules/myproject/controller/cronjop.php 

внутри файла задания хрон я только что назвал init.php по

require_once('/../../../../cron/init.php'); 

но хрон не работает может кто-нибудь помочь me ..

заранее.

+1

почему вы не просто вызывать nzend действие от хрон? – Robert

+0

Я не уверен, как это сделать .. Я новичок в zend .. – TomPHP

+1

это не имеет ничего общего с zend, просто открытый, как обычный PHP-сайт. Покажите свой кронтаб. – Robert

ответ

1

Я вижу вас пропустите точку использования Cron и Zend. Сайт Zend - это обычный сайт, поэтому вы можете использовать, например, lynx-браузер для запуска сайта.

*/10 * * * * lynx -dump http://www.myzendsite.com/mycontroller/mycronaction 

просто создать Мой контроллер добавить mycron Действия и поставить в этом методе то, что вы хотите хроны сделать. Lynx откроет его, как это сделал бы обычный пользователь. Через некоторое время Крон запустит рысь.

Линия */10 означает каждые 10 минут. Вы можете подходить под свои нужды.

Есть и другие способы запуска php-скрипта, например, через php-парсер или завиток.

Проверить это tutorial

+0

Позвольте мне попробовать это ..! – TomPHP

+1

Вам нужно установить lynx, если у вас его нет. В зависимости от системы, которую вы используете, она может использоваться «ссылками» вместо «lynx». – Robert

+0

Да, он уже установлен. – TomPHP