이 글의 내용은 PHP 인터뷰 경험에 관한 것입니다. 이제 모든 사람과 공유합니다. 도움이 필요한 친구들이 참고할 수 있습니다.
memcache와 redis
memcache의 유사점과 차이점 멀티 스레딩, 높은 처리량을 사용할 수 있으며 대규모 방문에 적합합니다.
memcache는 간단한 키/값 구조만 지원합니다.
memcache는 데이터를 유지할 수 없으며 백업할 수 없습니다. 데이터를 다시 시작한 후에만 사용할 수 있습니다. loss
memcache는 다중 스레드 작업을 지원하므로 데이터 일관성 문제를 고려해야 합니다. Cas(check and set) 낙관적 잠금이 사용됩니다.
redis는 단일 형식이므로 질서 있는 작업을 보장할 수 있습니다.
- redis는 다양한 데이터 구조, 키/값, 목록, 세트, zset, dict 등을 지원합니다.
- redis 데이터는 영구적으로 저장될 수 있고, 데이터는 디스크에 저장될 수 있으며, 읽을 수 있습니다. 다시 시작할 때
- redis는 데이터 백업, 즉 마스터-슬레이브 모드의 데이터 백업을 지원합니다.
웹 프로젝트를 위한 높은 동시성 솔루션
- 정적 HTML, 일반적으로 사용되지만 거의 업데이트되지 않는 데이터를 정적화
- 그림 애플리케이션 서버에 영향을 미치지 않도록 서버를 분리하는 동시에 사진 서버에 대해 별도의 구성 최적화, 캐시 설정 등을 수행할 수 있습니다.
- 데이터베이스 클러스터, 라이브러리 테이블 해싱
- 데이터베이스 클러스터는 읽기-쓰기 분리를 달성하고 데이터베이스를 향상시킬 수 있습니다. 응답 속도는 일반적으로 하나의 마스터와 여러 슬레이브 또는 x 마스터와 y 슬레이브입니다. 예를 들어, 적게 쓰고 많이 읽는 경우 한 서버는 쓰기 작업 전용으로 사용되고 다른 서버는 읽기 작업에 사용됩니다. 이렇게 하면 읽기-쓰기 잠금의 영향을 피할 수 있습니다. 그러나 쓰기 작업이 완료된 후에는 데이터를 동기화해야 합니다.
- 데이터베이스 클러스터의 또 다른 장점은 하나의 데이터베이스 서버가 다운되더라도 다른 서버에 완전한 데이터가 여전히 남아 있다는 것입니다.
- 분산 데이터베이스에는 시스템에 여러 노드가 있으며 각 노드는 서로 다른 작업 기능을 완료합니다. 특정 노드가 끊어지면 해당 기능을 완료할 수 없습니다.
- 데이터베이스 클러스터와 분산 데이터베이스의 차이점. 하나의 노드에서 작업을 완료하는 데 1시간이 걸리고 이제 해당 작업이 10개이고 노드가 10개 있다고 가정해 보겠습니다. 분산 데이터베이스는 작업을 10개의 작업으로 나눌 수 있습니다. 각 노드는 하위 작업의 종속성에 관계없이 다른 작업을 완료합니다. 모든 작업은 한 시간 후에 완료됩니다. 데이터베이스 클러스터의 각 노드는 전체 작업을 완료할 수 있으며 각 노드당 평균 10개의 작업을 완료할 수 있으므로 모든 작업은 1시간 후에 완료됩니다.
- sql 최적화
- 테이블에 데이터가 너무 많으면 테이블을 분할하고 해시 매핑
- 인덱스 최적화
- 캐싱
- 미러를 사용하여 액세스를 개선하는 것을 고려할 수 있습니다. 속도
- 로드 밸런싱, 높은 동시성 및 대규모 액세스 문제 해결
- CDN, 사용자가 가장 가까운 CDN 서버에 액세스하고 가장 빠른 응답을 얻을 수 있음
- 데이터 압축
PHP
Magic method
- __set/__get은 클래스에 존재하지 않는 속성을 처리합니다.
- __call/_callStatic은 클래스에 존재하지 않는 메서드/정적 메서드를 호출할 때 트리거됩니다. __callStatic 자체는 정적 메소드로 선언해야 합니다
- __toString 객체를 문자열 출력으로 변환
- __invoke 객체를 함수로 실행합니다
require와 include의 차이점
다릅니다 오류 처리 그 외에는 모두 동일합니다. require는 치명적인 오류를 생성하고 스크립트 실행을 중지합니다. include는 경고를 생성하지만 스크립트는 계속 실행됩니다
위 내용은 PHP 인터뷰의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!