Создайте cronjob с Платформой Зенда

Symfony Forms будет использовать get и set для чтения и записи данных модели. В вашем случае, поскольку у вас нет метода setGroupe() в Контакте, форма не знает, как записать значение обратно в сущность при отправке формы.

Для этого сценария формы Symfony имеют Data Mappers .

Устройства отображения данных отвечают за чтение и запись данных из родительских форм и в них.

blockquote>

В вашем случае вам, вероятно, понадобится что-то вроде этого:

public function mapFormToData($forms, &$data)
{
    $forms = iterator_to_array($forms);
    // "groupe" is the name of the field in the ContactType form
    $groupe = $forms['groupe'];

    foreach ($groupe as $group) {
        // $data should be a Contact object
        $data->addGroup($group);
    }

    // ...Map remaining form fields to $data
}

22
задан Till 27 September 2008 в 14:43
поделиться

8 ответов

http://framework.zend.com/wiki/display/ZFPROP/Zend_Scheduler+-+Matthew+Ratzloff?rootCommentId=1819 эта ссылка, которую я нашел googleing, кажется, довольно интересна также.

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

0
ответ дан 16 October 2019 в 21:33
поделиться

Вы могли настроить таблицу базы данных, чтобы содержать ссылки на cronjob сценарии (в Ваших модулях), затем использовать исполнительную команду с возвращаемым значением на передаче/сбое.

0
ответ дан 29 November 2019 в 04:57
поделиться

У Вас есть доступ к файловой системе к каталогам модулей? Вы могли выполнить итерации по каталогам и определить, где CronjobController.php доступен. Затем Вы могли или использовать Zend_Http_Client, чтобы получить доступ к контроллеру через HTTP или использовать подход как Zend_Test_PHPUnit: моделируйте фактический процесс отправки локально.

0
ответ дан 29 November 2019 в 04:57
поделиться

Я предостерег бы помещение Вашего cronjobs доступного для общественности, потому что они могли быть инициированы вне их нормальных времен и, в зависимости от того, что они делают, проблемы причины (я знаю, что это не то, что Вы предназначаете, но путем помещения их в фактический контроллер, это становится достижимым от браузера). Например, у меня есть один крон, который посылает электронные письма. Я постоянно массово рассылался бы, если бы кто-то нашел URL крона и только что начал поражать его.

то, Что я сделал, было, делают папку крона и там создал heartbeat.php, который загружает Платформу Зенда (минус MVC) для меня. Это проверяет базу данных, которая имеет список всех установленных заданий крона и, если это пора им работать, генерирует экземпляры класса задания крона и выполняет его.

задания крона являются просто дочерними классами от абстрактного класса крона, который имеет методы как установка (), выполненный (), деактивируйтесь (), и т.д.

Для исчерпывания моего задания, у меня просто есть простая crontab запись, которая работает каждые 5 минут, который поражает heartbeat.php. До сих пор это работало замечательное над двумя различными сайтами.

7
ответ дан 29 November 2019 в 04:57
поделиться

Кто-то упомянул эта запись в блоге пара несколько дней назад на fw-general ( mailinglist, который я рекомендую читать, когда Вы используете Платформу Зенда).

существует также предложение по Zend_Controller_Request_Cli, который должен обратиться к этому рано или поздно.

3
ответ дан 29 November 2019 в 04:57
поделиться

Почему бы просто не создать файл crontab.php, включающий или требующий файл начальной загрузки index.php?

Учитывая, что загрузчик выполняет Zend_Loader :: registerAutoload () , вы можете начать работать непосредственно с модулями, например, myModules_MyClass :: doSomething ();

Таким образом, вы пропускают контроллеры. Задача контроллера - контролировать доступ через http. В этом случае вам не нужен подход к контроллеру, потому что вы осуществляете локальный доступ.

1
ответ дан 29 November 2019 в 04:57
поделиться

After some research and a lot procrastination I came to the simple conclusion that a ZF-ized cron script should contain all the functionality of you zend framework app - without all the view stuff. I accomplished this by creating a new cronjobfoo.php file in my application directory. Then I took the bare minimum from: -my front controller (index.php) -my bootstrap.php

I took out all the view stuff and focused on keeping the environment setup, db setup, autoloader, & registry setup. I had to take a little time to correct the document root variable and remove some of the OO functionality copied from my bootstrap.

After that I just coded away.. in my case it was compiling and emailing out nightly reports. It was great to use Zend_Mail. When I was confident that my script was working the way I wanted, I just added it my crontab.

good luck!

12
ответ дан 29 November 2019 в 04:57
поделиться

Для Zend Framework В настоящее время я использую приведенный ниже код. Сценарий включает только файл портала index.php, в котором загружаются все пути, среда и другой код Zendy. Определяя константу в скрипте cron, мы отменяем последний шаг, на котором запускается приложение.

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

//public/index.php

if(!defined('DONT_RUN_APP') || DONT_RUN_APP == false) {  
    $application->bootstrap()->run();
}

// application/../cron/cronjob.php

define("DONT_RUN_APP",true);
require(realpath('/srv/www/project/public/index.php'));
$application->bootstrap('config');
$application->bootstrap('db');

//cron code follows
10
ответ дан 29 November 2019 в 04:57
поделиться
Другие вопросы по тегам:

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