Выполнение действия Платформы Зенда из командной строки

Я хотел бы выполнить действие Платформы Зенда для генерации некоторых файлов из командной строки. Действительно ли это возможно и сколько изменения я должен был бы внести в свой существующий веб-проект, который использует ZF?

Спасибо!

63
задан Roalt 24 February 2010 в 20:56
поделиться

4 ответа

На самом деле это намного проще, чем вы думаете. Компоненты начальной загрузки / приложения и ваши существующие конфигурации можно повторно использовать со сценариями CLI, избегая при этом стека MVC и ненужного веса, который вызывается в HTTP-запросе. Это одно из преимуществ отказа от использования wget.

Запустите свой сценарий, как ваш общедоступный index.php:

<?php

// Define path to application directory
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH',
              realpath(dirname(__FILE__) . '/../application'));

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV',
              (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
                                         : 'production'));

require_once 'Zend/Application.php';
$application = new Zend_Application(
    APPLICATION_ENV,
    APPLICATION_PATH . '/configs/config.php'
);

//only load resources we need for script, in this case db and mail
$application->getBootstrap()->bootstrap(array('db', 'mail'));

Затем вы можете перейти к использованию ресурсов ZF так же, как и в приложении MVC:

$db = $application->getBootstrap()->getResource('db');

$row = $db->fetchRow('SELECT * FROM something');

Если вы хотите добавить настраиваемые аргументы в свой сценарий CLI, взгляните на Zend_Console_Getopt

. Если вы обнаружите, что у вас есть общий код, который вы также вызываете в приложениях MVC, обратите внимание на то, чтобы заключить его в объект и вызвать методы этого объекта как из приложений MVC, так и из приложений командной строки. Это хорошая практика.

64
ответ дан 24 November 2019 в 16:14
поделиться

Вы можете просто использовать PHP, как обычно, из командной строки. Если вы вызываете сценарий из PHP и устанавливаете действие в своем сценарии, вы можете запускать все, что захотите.

Это было бы очень просто. Это не совсем то, как предполагалось, но вот как это могло бы работать, если бы вы захотели.

Например

 php script.php 

Прочтите здесь: http://php.net/manual/en/features.commandline.php

-1
ответ дан 24 November 2019 в 16:14
поделиться

Вы можете использовать команду wget, если ваша ОС - Linux. Например:

wget http://example.com/controller/action

См. http://linux.about.com/od/commands/l/blcmdl1_wget.htm

ОБНОВЛЕНИЕ:

Вы можете написать простой сценарий bash, подобный этому:

if wget http://example.com/controller/action
    echo "Hello World!" > /home/wasdownloaded.txt
else
    "crap, wget timed out, let's remove the file."
    rm /home/wasdownloaded.txt
fi

Затем вы можете сделать это на PHP:

if (true === file_exists('/home/wasdownloaded.txt') {
    // to check that the 
}

Надеюсь, это поможет.

-1
ответ дан 24 November 2019 в 16:14
поделиться

Один из вариантов состоит в том, что вы можете обмануть его, выполнив wget для URL, который вы используете для вызова желаемого действия

0
ответ дан 24 November 2019 в 16:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: