Консольная очередь

У приложения есть несколько задач, которые, по идее, должны выполняться в консоли и пользователь не должен ждать окончания их выполнения. Или они должны стартовать по cron’у. Т.е. те, что инициировал пользователь, должны начать выполняться немедленно — загружен прайслист, нажата кнопка «обновить рейтинг». Также есть задания, выполняемые по расписанию: генерация sitemap, рассылка новостей почтой и т.д. Нашел три приемлемых решения, никак не могу выбрать. Читать далее Консольная очередь

Особенности межплагинного взаимодействия

Конечно, вызывать методы классов плагина из другого плагина не очень хорошо. Но, тем не менее. Чтобы впоследствии не было мучительно больно, при объявлении связей между моделями, надо всегда указывать свойство className, причем полностью, т.е. ‘Plugin.MyModel’. Иначе возможны весьма забавные эффекты. Справедливо для версий 1.2 и 1.3. Дальше немного кода.

Читать далее Особенности межплагинного взаимодействия

Компоненты: перезагрузка

Не знаю, такую-ли ситуацию имел в виду BorisPlus в своем комментарии. Ну, чем богаты. Вообще не хотел это все описывать, потому как код довольно халтурно написан.

Этот код приложения, изначально крутившийся по Cake 1.1, был переписан для какой-то беты Cake 1.2. С текущей версией, 1.2.5, он работает без проблем, но, возможно, нуждается в чистке.

Эта часть программы выполняющий импорт данных от поставщиков. Поставщики предоставляют данные в CSV формате, но порядок колонок, некоторые значения и т.д., конечно разные. Для осмысленной обработки эти полученные данные надо привести к единообразному виду.

Данные поступают из написанного куцего Datasource, скармливанются компоненту, который и выполняет разбор и приведение к общему виду, потом записываются в нашу таблицу.

Читать далее Компоненты: перезагрузка

Кэш и консоль

За полноценный пост не считается. Так, узелок на память.

В качестве кэша байткода и переменных я использую XCache. Но при запуске консольных приложений, он у меня не работает. Должен или нет, не знаю, не разбирался. Наверное, не должен, если подумать. :-) Просто отметил, что консольные приложения Cake, включая ‘cake bake‘ высыпают кучу ошибок, если XCache используется, как кэш по умолчанию. Поэтому в конфигурации кэша приложения (APP/config/core.php) на CakePHP добавляю маленькую проверку на тип API.

Вот как-то так:

Можно пользоваться константой PHP_SAPI или функцией php_sapi_name(), не важно.