Я создаю модуль, который требует выполнения нескольких действий (только один раз), когда модуль установлен. Могут быть некоторые вещи, которые необходимо выполнить, но самое главное, что мне нужно сделать, это сделать вызов API на сервер, чтобы внешний сервер знал, что модуль был установлен, и получить несколько обновленных настроек Предметы.Соответствующий/лучший способ выполнения некоторых PHP, не связанных с базой данных, когда модуль впервые установлен?
Я прочитал это this question on stackoverflow однако в моей ситуации я действительно заинтересован в выполнении кода, который не имеет ничего общего с базой данных, светильниками, обновляющими таблицами и т. Д. Кроме того, просто чтобы быть чистым, этот модуль не влияет (эффект?) на переднем конце. FYI, я также прочитал this spectacular article от Alan Storm, но это действительно только наводит на мысль, что сценарии установки/обновления не предназначены для выполнения случайного PHP.
На мой взгляд, у меня есть несколько возможных путей достижения этого:
- я делать то, что я боюсь, это не лучшая практика и добавить некоторые PHP для моей установки/установить скрипт для выполнения этой PHP
- Я создаю какой-то cronjob, который выполнит задачу, которая мне нужна только один раз (не знаю, как это будет работать, но похоже, что это может быть «креативное» решение), конечно, если cron не настроен должным образом, это не удастся, что is not good
- Я создаю флаг core_config_data ('mynamespace/mymodule/initialized'), который я установил после запуска моего скрипта, и я проверяю каждой области adminhtml, которую касается мой модуль (CMS/Pages и собственный пользовательский контроллер adminhtml). Это кажется хорошим решением, за исключением всех дополнительных накладных расходов при каждом ударе CMS/Pages или моем контроллере, проверяя этот параметр core_config_data. ХОРОШАЯ вещь об этом решении заключалась бы в том, что если бы что-то не получилось с моим вызовом API, я могу установить для этого флага значение false, и он снова запустится, отобразит соответствующее сообщение и продолжит работу до тех пор, пока он не удастся (или не имеет дополнительной логики, остановит код инициализации после XX числа попыток)
Есть ли какой-либо из этих вариантов «лучший» способ, и есть ли какой-либо прецедент для этого где-то, например, уважаемое расширение или от самого Магено?
Заранее благодарим за ваше время!
Спасибо, что нашли время ответить @sonassi - очень цените это!Я, честно говоря, никогда не думал о том, чтобы смотреть на связанные с грушей magento файлы для подключения к поиску решения, и, честно говоря, я мало знаю о том, как Magento Connection действительно работает в фоновом режиме (у меня никогда не было причин, и я всегда предполагал, что это был прямой процесс), но это дает мне еще кое-что, на что можно обратить внимание. Если у вас есть какие-то другие идеи/мысли, я, конечно же, буду их слышать! –