Я создаю модуль, который требует выполнения нескольких действий (только один раз) при установке модуля. Может быть ряд вещей, которые нужно сделать, но самое основное, что мне нужно сделать, это сделать API-вызов на сервер, чтобы сообщить внешнему серверу, что модуль был установлен, и получить несколько обновленных конфигураций. Предметы.
Я прочитал этот этот вопрос в stackoverflow, однако в моей ситуации меня действительно интересует выполнение кода, который не имеет ничего общего с базой данных, фикстурами, обновлением таблиц и т. д. Кроме того, просто для ясности, этот модуль не влияет (влияет?) на внешний интерфейс. К вашему сведению, я также прочитал эта впечатляющая статья Алана Сторма, но на самом деле это только доводит до моего сознания, что сценарии установки/обновления не предназначены для выполнения случайного PHP.
На мой взгляд, у меня есть несколько возможных способов сделать это:
- Я делаю то, что, как я боюсь, не является лучшей практикой, и добавляю немного PHP в мой скрипт установки/установки, чтобы выполнить этот php.
- Я создаю какой-то cronjob, который будет выполнять нужную мне задачу только один раз (не уверен, как это будет работать, но кажется, что это может быть «творческое» решение — конечно, если cron не настроен должным образом, это не удастся, что не хорошо
- Я создаю флаг core_config_data («mynamespace/mymodule/initialized»), который устанавливаю после запуска моего скрипта, и проверяю каждую область adminhtml, к которой прикасается мой модуль (CMS/Pages и мой собственный контроллер adminhtml). Это похоже на хорошее решение, за исключением всех дополнительных накладных расходов каждый раз, когда происходит попадание в CMS/Pages или мой контроллер, проверяя этот параметр core_config_data. ХОРОШАЯ вещь в этом решении заключается в том, что если что-то потерпит неудачу с моим вызовом API, я могу установить этот флаг в false, и он снова запустится, отобразит соответствующее сообщение и продолжит работу до тех пор, пока не добьется успеха (или не будет иметь дополнительную логику, которая остановит код инициализации после XX попыток)
Являются ли какие-либо из этих вариантов «лучшими» способами, и есть ли где-нибудь прецедент для этого, например, уважаемое расширение или сами Magento?
Спасибо заранее за ваше время!