2017-12-20 8 views
0

내 제품에는 50 명의 고객이 있습니다. 각 고객은 MYSQL 데이터베이스를 가지고 있으며 Codeigniter를 사용하고 있습니다.여러 고객을 대상으로 동일한 Codeigniter 코드 설치의 여러 응용 프로그램

나는이 50 개 하위 폴더 예를 들어 domain.com/client1 domain.com/client2 등 에 나는 각각의 새로운의 설치의 여러 사본을 싶지 않는 내 모든 고객 및 다른 데이터베이스 및 하위 도메인 에 대해 하나의 설치를 갖고 싶어 클라이언트

이상적으로 domain.com/app/

이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 나는 고객이 우리와 함께 등록 할 때 동적으로 각 고객을위한 폴더를 만들고 diff 구성 파일을 작성하려고했습니다. 나는 여기서 뭔가 잘못하고 있다고 생각합니다.

+0

각 고객마다 다른 데이터베이스를 원한 이유를 말씀해 주시겠습니까? 때로는 각 고객에 대해 별도의 데이터베이스가 필요하지 않은 경우이 방법에 접근하는 더 좋은 방법이 있습니다. 보안 및 데이터 분리를 위해이 기능이 필요할 수도 있지만 알아두면 유용 할 것입니다. –

+0

각 고객에 대해 왜 다른 데이터베이스가 필요한지 계속 기록하고 싶습니다. – shine

+0

응용 프로그램에 각 고객에 대한 인증이 있습니까? –

답변

1

원하는 것은 멀티 테넌시 (multi-tenancy) 아키텍처와 같습니다. 즉, 모든 고객에게 동일한 코드이지만 각각에 대해 전용 데이터베이스입니다.

1) 사용자 및 관련 데이터베이스를 기록하기 위해 마스터 데이터베이스를 만들 수 있습니다. 사용자가 등록되어 사용자에 대한 새 데이터베이스를 작성하고 마스터 테이블을 갱신하면 해당 사용자와 연관된 데이터베이스 이름을 기록하십시오.

2) 사용자 로그인에 마스터 테이블 데이터를 인증해야하는 경우 일단 인증되면 사용자와 연관된 데이터베이스 이름이 있습니다. 데이터베이스 이름이 있으면 데이터베이스를 사용자 데이터베이스로 전환해야합니다. 당신이 $db 변수를 업데이트 할 수 있습니다 CodeIgniter를,에서 사용할 수있는 기능이있다 : 일단 모든 작업을보다 수행

$this->db = $this->load->database(); 

는 관련 사용자의 데이터베이스에 수행 될 것이다.

참고 : 모든 필수 파일에서 $db 변수를 변경해야하며 그렇지 않으면 전역 적으로 변경할 수 있습니다.

희망이 도움이됩니다.

편집은 전 세계적으로 당신이 함수를 작성 세션에서 도우미 파일에 데이터베이스를 저장 한 데이터베이스를 전환 할 (세션에서 데이터베이스 이름을 사용) 할 수있는 데이터베이스를로드합니다. 주 컨트롤러에서 헬퍼를로드하기 만하면 $db가 전역으로 전환됩니다.

+0

DB 변수를 전역 적으로 변경할 수 있습니까? – shine

+0

@ shine : 내 대답의 편집 부분을 확인하십시오. –