Сопоставить URL с базами данных MySQL - PullRequest
0 голосов
/ 31 января 2009

Мне интересно предложить как размещенную, так и SaaS-версию моего приложения . Теперь SOers предложили мне сопоставить URL-адреса с базами данных MySQL . Я могу подумать, что-то вроде этого

  1. companya.mysoft.com будет иметь базу данных MySQL, которая начинается с имени companya *. то есть compana_mydb
  2. companyb.mysoft.com будет иметь базу данных MySQL, которая начинается с имени companyb * .i.e., Companyb_mydb
  3. и т. Д.

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

Теперь можно ли настроить все эти параметры внутри файлов конфигурации Apache, файлов InSQL MySQL и файлов INI PHP? (Я использую Apache, MySQL и PHP). Желательно, чтобы я не менял заявление .

Редактировать: MySQL не поддерживает пользовательские каталоги, специфичные для базы данных . Измените вопрос, чтобы отразить это.

Edit2: Некоторые предположили, что я отредактировал приложение PHP, чтобы проверить поддомен и выбрать правильную базу данных. Но это будет означать настройку кода хостинга для соответствия версии SaaS. По сути, у нас было бы две версии кода, одна для хостинга, другая для SaaS , это не то, что я хотел. Было бы лучше, если бы все было сделано через конфигурационный файл, чтобы у меня была только одна версия кода.

Ответы [ 3 ]

2 голосов
/ 31 января 2009

Вы не можете создать соединение с базой данных для использования PHP из конфигурации Apache. Соединение с базой данных должно быть создано из кода PHP, который может выполнять такие действия, как проверка заголовков (домен, используемый запросом), или проверка файлов конфигурации, которые ВЫ создаете, и указание, используете ли вы SaaS или размещенную версию.

2 голосов
/ 31 января 2009

Если вы правильно настроили свое PHP-приложение (возможно, с использованием шаблона проектирования MVC или фреймворка), у вас есть одно место, где вы указываете имя базы данных, которое будет использоваться всеми последующими функциями mysql в этом запросе. Тогда нужно просто проверить заголовки запроса, получить (и проверить) префикс имени компании / базы данных и использовать его в функции mysql_select_db.

1 голос
/ 31 января 2009

Зачем вам это нужно делать в файлах INI? Я бы просто попросил ваш класс базы данных PHP сначала проанализировать $ _SERVER ['SERVER_NAME'] (или что-то еще эквивалентное), чтобы выяснить, на каком поддомене вы находитесь, а затем выбрать соответствующую базу данных оттуда.

Если вы используете PDO или mysqli (и вам следует) для функций базы данных, вы должны указать имя db в вызове конструктора, так что вы можете просто сделать эту проверку прямо перед созданием этого объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...