Я хочу создать файл конфигурации динамически, как во время выполнения. У меня есть стол с именем Settings
в базе данных. Его структура похожа на:
|Column |Type |Length|
|id |int |11 |
|key |varchar |100 |
|value |varchar |255 |
|created_at |datetime| |
|updated_at |datetime| |
Теперь, когда приложение запускается в первый раз, оно должно проверить, подключено ли оно к базе данных или нет. Если нет, то он должен быть перенаправлен на installer
стр. Там, где пользователь введет необходимые данные и файл конфигурации будет сгенерирован соответствующим образом, и те же данные будут сохранены в Settings
стол для будущего использования.
Я не хочу жестко закодировать какие-либо значения в конфигурационном файле. Итак, как мне решить эту задачу? Есть идеи?
Я подумал об идее. Что если я проверю params-local.php
файл для параметра под названием installed
со значением true
, Если оно существует, мы говорим, что приложение успешно установлено, иначе мы отправим пользователя в installer
стр.
Вы всегда можете использовать замыкания (анонимные функции) для получения любых параметров, которые вы хотите, в любое место по вашему желанию.
Посмотреть здесь: Настройка нескольких баз данных нескольких арендаторов
Я хотел бы использовать сервер кэширования, такой как memcached. Убедитесь, что вы кэшируете значения после того, как прочитаете их из БД. Вы действительно не хотите, чтобы одни и те же запросы выполнялись снова и снова. Затем используйте замыкание, чтобы объединить данные, которые вы прочитали и кэшировали из БД, с любыми значениями по умолчанию, которые у вас есть, при этом все еще используя те же файлы конфигурации.
Если вы действительно хотите ускорить процесс в своем файле index.php, при чтении конфигурации вы можете создать свой собственный массив конфигурации любым удобным для вас способом (я бы по-прежнему использовал memcached) и запустить приложение с этой конфигурацией. Конфигурационные файлы — это просто массивы, которые используются при запуске приложения.
Во-первых, вы, вероятно, не сможете использовать какие-либо специфические функции yii в любом месте, потому что приложение Yii будет доступно до тех пор, пока вы не запустите его (с конфигурацией, которую я имею в виду), поэтому вам, возможно, придется создавать функции непосредственно в PHP.
Других решений пока нет …