PHP + 데이터베이스 서버를 실행하고 데이터베이스 스키마와 PHP 소스를 수정하는 업데이트를 배포하려고한다고 가정 해 보겠습니다. 너는 그것을 정기적으로한다.PHP 서버에 업데이트를 원자 적으로 배포하는 방법, 즉 일관성을 유지 하시겠습니까?
문제는 업데이트하는 동안 서비스가 일시적으로 일관성없는 상태가되고 결과적으로 클라이언트에 임의의 오류가 발생한다는 것입니다. 먼저 스키마를 업데이트하는 동안 DB 테이블에서 불일치가 발생하고 DB와 소스 간의 불일치가 발생합니다. 소스를 직접 업데이트하면 파일이 매우 짧은 순간 동안 비어 있거나 부분적으로 표시되고 모듈간에 일관성이 없습니다. 업데이트하는 동안 클라이언트에 오류가 발생할 가능성이 있습니다.
질문은 이것을 방지하는 가장 좋은 방법은 무엇입니까?
내가 생각하고있는 해결책은 다음과 같습니다. 서버의 루트 인 .htaccess
을 업데이트 기간 동안 HTTP 503 Service unavailable
을 반환하는 것으로 대체 한 다음 원본을 다시 넣습니다 (스크립트가이 모든 작업을 수행한다고 가정). 클라이언트는 몇 초 내에 다시 시도 할 수 있습니다. 예를 들어 503은 10 초 이내에 3 회 이상 재 시도한다는 의미입니다.
하나의 잠재적 인 문제는 htaccess가 스왑되기 전에 일부 요청이 이미 진행 중이므로 모든 요청이 처리 될 때까지 대기 할 수있는 방법이 필요합니다. 가장 문제는 긴 파일 전송입니다. 클라이언트에게 파일을 제공하는 데 분 단위가 걸리면 서버가 분당 503 개 상태에 있음을 의미합니다.
또한 PHP를위한 특별한 솔루션이 있습니까?