2010-04-04 3 views
2

저는 전략적 구조 조정이 필요한 PHP 웹 애플리케이션을 개발했습니다.기본 코드 시스템에 대한 아이디어가 필요합니다.

현재 새 클라이언트를 설정할 때 우리는 주 도메인의 하위 도메인에 전체 코드 기반을 부여하고 데이터베이스에 새 테이블을 만듭니다.

이렇게하면 각 클라이언트가 전체 코드베이스를 갖게됩니다. 즉, 우리가 버그를 변경할 때 수정해야 할 사항을 모든 클라이언트에서 독립적으로 적용해야합니다. 이는 고통입니다.

작성하고 싶은 것은 모든 핵심 PHP 파일을 보유하고있는 기본 코드 서버입니다.

base.domain.com 

고객 (client.domain.com)의 모든는 몇 개의 파일 만 필요합니다

  • config.php 데이터베이스 연결 정보를 가질 것이다.
  • index.php - 세션이 존재하지 않으면 로그인 상자를 표시하고 그렇지 않은 경우 은 원격 에 base.domain.com을 포함하여 기준 코드를로드합니다.

제 논리는 실현 가능합니까? 다른 사람들이 기본 코드를 사용하여 비슷한 상황을 어떻게 처리합니까?

또한 .... base.domain.com에서 PHP 파일을 원격으로 포함하고 client.domain.com에 포함시킬 수 있습니까?

답변

1

모든 클라이언트에 대해 clientId를 작성하면 하나의 데이터베이스에서 작업 할 수 있으며 모든 사용자에 대해이 고유 ID를 정의하는 config.php를 처리 할 수 ​​있습니다.

두 번째 질문 :

PHP.NET http://php.net/manual/en/function.include.php : (디폴트 설정입니다) PHP에서 사용할 수있다 "는 fopen 래퍼는 URL이"파일을 지정할 수 있습니다

경우 포함 할 로컬 경로 이름 대신 URL (HTTP 또는 기타 지원되는 래퍼를 통해 - 프로토콜 목록에 대해 지원되는 프로토콜/래퍼 목록 참조)을 사용합니다. 대상 서버가 대상 파일을 PHP 코드로 해석하면 HTTP GET과 함께 사용되는 URL 요청 문자열을 사용하여 변수가 포함 된 파일로 전달 될 수 있습니다. 이것은 엄밀히 말하면 파일을 포함하고 부모 파일의 가변 범위를 상속받는 것과 동일한 것을 말하지는 않습니다. 스크립트는 실제로 원격 서버에서 실행되고 결과는 로컬 스크립트에 포함됩니다.

+0

이 응용 프로그램 유형의 경우 회사 데이터가 관련되어 있기 때문에 각 클라이언트의 데이터베이스를 별도로 유지하는 것이 좋습니다. 방금 파일을 원격으로 포함하는 대신 서버의 파일에 대한 전체 경로를 사용하는 대신 깨달았습니다. 감사합니다 –

1

는 원격 base.domain.com에서 PHP 파일을 포함하고 그들이 client.domain.com에 포함 심지어 possbile인가?

천천히 그러나 천천히. 또한 중앙 서버가 오프라인 인 경우 어떻게됩니까? 모든 클라이언트의 앱이 더 이상 실행되지 않습니다.

클라이언트의 앱이 어떤 플랫폼에서 실행되는지는 모르지만 Subversion과 같은 버전 관리 시스템에서는 그렇지 않습니다.

코드베이스의 변경 사항은 중앙 저장소로 체크인되고 모든 클라이언트의 사본이 자동으로 업데이트됩니다.

+0

Subversion에 관한 당신의 제안에 감사드립니다. –

1

이렇게하면 각 클라이언트가 전체 코드베이스를 갖게됩니다. 즉, 버그를 수정하고 모든 클라이언트에서 독립적으로 적용해야하는 문제를 수정합니다. 이는 고통입니다.

왜이 문제를 해결하지 않습니까? rsync에 작은 스크립트를 작성하여 다른 클라이언트에 게시하려는 최신 '안정적인'빌드는 시간이 오래 걸리거나 오류가 발생하지 않아야합니다 (또는 버전 관리 소프트웨어를 사용하여 정확하게 작성해야합니다).

관련 문제