>  기사  >  백엔드 개발  >  PHP에 대한 지식과 경험을 공유하세요

PHP에 대한 지식과 경험을 공유하세요

零到壹度
零到壹度원래의
2018-04-14 17:45:071296검색

이 기사의 내용은 PHP 인터뷰에 대한 지식과 경험을 공유하기 위한 것입니다. 이는 특정 참고 가치가 있습니다. 도움이 필요한 친구는 이를 참조할 수 있습니다.

  • CORS(교차 출처 자원 공유) 교차 도메인 자원 공유 , 이는 교차 사이트 리소스 요청을 허용합니다. 클라이언트는 리소스(예: xmlhttprequest)를 요청하기 위해 특정 방법을 사용해야 하며 서버는 도메인 간 리소스 요청도 지원해야 합니다

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의 차이점

  • include 함수: 파일을 읽고 내부 프로그램이 실행되도록 지정합니다.

  • require 함수: 대상 파일의 내용을 읽고 읽은 내용으로 자신을 바꿉니다.

  • include_once 함수: 실행 중; 스크립트 지정된 파일을 포함하고 실행합니다. 이 동작은 include 문과 유사합니다. 유일한 차이점은 파일이 이미 포함된 경우 다시 포함되지 않는다는 것입니다. 이 명령문의 이름에서 알 수 있듯이 한 번만 포함됩니다.

  • require_once 함수: require 명령문과 정확히 동일하지만 유일한 차이점은 PHP가 파일이 이미 포함되었는지 확인하고, 그렇다면 다시 포함되지 않습니다.

  • include_once 또는 require_once를 사용하면 파일을 로드하기 전에 파일이 로드된 파일 테이블에 로드되었는지 먼저 검색하기 때문에 프로그램의 효율성이 떨어집니다.

  • 존재하지 않는 파일을 포함하면 경고, require는 하지 않습니다. 파일이 존재하면 치명적인 오류가 직접 발생하고 스크립트가 중지됩니다.

  • include는 조건부 포함 함수이고 require는 무조건 포함 함수입니다. 즉, include 또는 require의 외부 레이어에 if 조건이 있는 경우 if가 false이면 포함하지 않고 true인 경우에만 파일을 포함하고, require는 여부에 관계없이 파일을 포함합니다. 그것은 사실이거나 거짓입니다

반환할 때 왜 괄호를 사용할 수 없나요?

  • return은 함수가 아닌 단지 언어 구조일 뿐입니다. 반환 값을 괄호로 묶으면 효율성이 떨어집니다

  • 만약 반환 값은 매개변수를 제공하지 않습니다. 이는 null을 반환하며 이때 괄호를 포함해서는 안 됩니다. 괄호를 사용하면 구문 분석 오류가 발생하므로 변수에 대한 참조를 반환할 때 괄호를 사용하면 안 됩니다. 그렇지 않으면 참조 자체가 아닌 반환된 참조 값이 됩니다

  • PHP 약한 유형 변수 메커니즘

  • fast_cgi

php_fpm

php5 php7 차이

위 내용은 PHP에 대한 지식과 경험을 공유하세요의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.