2009-01-31 7 views
0

두 가지 모두 제공하는 데 관심이 있습니다. hosted and SaaS version of my application. 이제, SOERS는 I가 map the URLs to MySQL databases이라고 제안했습니다. 내가 생각할 수있는 것은 이런 것입니다.MySQL 데이터베이스에 대한 URL 맵

  1. companya.mysoft.com에는 companya *라는 이름으로 시작하는 MySQL 데이터베이스가 있습니다. 즉 compana_mydb
  2. companyb.mysoft.com은 companyb * .i.e., companyb_mydb
  3. 등으로 시작하는 MySQL 데이터베이스를 갖습니다.

이렇게하면 새 회사 계정을 만들고 유지 관리하는 것이 더 쉽습니다.

이제이 모든 설정을 내의 Apache 구성 파일과 MySQL ini 및 PHP ini 파일을 조정할 수 있습니까? (저는 Apache, MySQL, PHP를 사용하고 있습니다). 내 신청서를 변경하지 마십시오..

편집 : MySQL은 user-specified database-specific directories을 지원하지 않습니다. 이것을 반영하도록 질문을 변경하십시오.

편집 2 : 일부 사람들은 PHP 응용 프로그램을 편집하여 하위 도메인을 확인하고 올바른 데이터베이스를 선택하도록 제안했습니다. 그러나 그것은 SaaS 버전을 충족시키기 위해 호스팅 코드를 조정하는 것을 의미합니다. 그래서 본질적으로 우리는 두 개의 코드 버전을 갖게 될 것입니다. 하나는 호스팅 용이고 다른 하나는 SaaS 용입니다. 이것은 내가 원하는 것이 아닙니다. config 파일을 통해 모든 것이 완료되면 코드 버전이 하나 뿐이므로 좋을 것입니다.

답변

2

PHP 응용 프로그램을 올바르게 설정하면 (일부 유형의 MVC 디자인 패턴 또는 프레임 워크를 사용하는 경우), 그 요청에서 모든 후속 mysql 함수가 사용할 데이터베이스 이름을 지정하는 한 곳이 있습니다. 그런 다음 요청 머리글을 검사하고 회사/db 이름 접두어를 가져 와서 확인한 다음 mysql_select_db 함수에서 사용합니다.

+0

감사하지만 SaaS 버전을 충족하기 위해 호스팅 코드를 조정하면됩니다. 그래서 본질적으로 두 개의 코드 버전을 갖게 될 것입니다. 하나는 호스팅 용이고 다른 하나는 SaaS 용입니다. 이것은 내가 원하는 바가 아닙니다. – Graviton

+0

이미 요청 헤더를보고 있으므로 url이 SaaS 도메인과 일치하는지 확인한 다음 위의 지침을 따르는 경우 그렇지 않으면 unprefixed db name을 사용하십시오. 2 개의 코드베이스가 필요 없습니다. –

1

왜 INI 파일에서 처리해야합니까? 난 단지 PHP 데이터베이스 클래스를 먼저 $ _SERVER [ 'SERVER_NAME'] (또는 이와 동등한 다른 것으로) 구문 분석하여 현재 사용중인 하위 도메인을 찾은 다음 거기에서 해당 데이터베이스를 선택하십시오.

데이터베이스 함수에 대해 PDO 또는 mysqli를 사용하는 경우 생성자 호출에서 db 이름을 지정해야하므로 해당 객체를 만들기 전에 바로이 확인 작업을 수행 할 수 있습니다.

2

PHP의 데이터베이스 연결을 Apache 구성에서 사용할 수 없습니다. PHP 코드 내에서 데이터베이스 연결을 생성해야합니다.이 코드는 헤더 (요청이 사용 된 도메인)를 검사하거나 SaaS 또는 호스트 된 버전을 실행중인 경우 생성 및 지정하는 구성 파일을 검사하는 것과 같은 작업을 수행 할 수 있습니다.

관련 문제