문제

PHP 기반 애플리케이션에 대해 Opcode Caching/Zend Acceleration을 조사하는 동료가 있습니다. 그의 벤치 마크는 우리가 require_once를 가진 (대형) 클래스 라이브러리를 포함 시키면 성능 혜택을 보지 못한다는 것을 나타냅니다. 그러나 포함 _once를 사용할 때 성능 이점이 있습니다.

이것은 우리 둘 다에게 비린내 냄새가 나지만, 벤치 마크 방법론을 확인할 시간이없고 동료는 나보다 물고기 냄새에 대한 관용이 더 많습니다. :)

누구든지 이와 같은 사람이 있습니까? 그렇지 않다면, 포함 _once에서 require_once로 전환하여 성능이 증가 할 수있는 다른 것들에 대한 생각이 있습니까?

도움이 되었습니까?

해결책

우선, 두 통화 (require_once 및 include_once) 모두 파일이 포함되지 않은 경우 두 번 확인하십시오.

따라서 그들이이를 달성하는 방법은 사용 가능한 모든 경로에서 파일을 검색하고 본질적으로 믹스에 있지 않은지를 확인하는 것입니다.

백그라운드에서 어떤 일이 일어나는지는 모든 다른 옵션 (예 : 다중 포함 _Path 등)을 평가 한 다음 realpath 이 폐기 된 양식에서 그들은 고유 식별자를 만듭니다. 둘이 아닌 동일한 경로 만 있습니다.

이것은 이미 지구상에서 가장 빠른 프로세스가 아니며 일반적으로 PHP의 각 요청에서 발생합니다. 그런 다음 내가 부르는 것을 생성 할 때 통계 인 또 다른 비싼 작업을 추가하십시오. realpath (realpath, 그것은 일종의 것이기 때문에 RealPath () 파일이 존재하는지 확인합니다.

내가 틀렸다면 나를 수정하지만 APC는 특히이 경우에 최적화를 가지고 있습니다.

어쨌든 - 지금 차이에 require_once와 include_once 사이에서 require_once가 파일을 평가합니다 (for 낮은 수준 오류가 포함 된 경우 오류를 구문 분석합니다. 이는 구문 분석 오류가 포함되지 않을 수있는 충분한 QA가있는 경우 제거 할 수있는 추가 점검입니다.

그렇지 않으면 찾는 것은 까다로워집니다. :-)

(고려해야 할 사항 : 요구 사항으로 개발하고 배포 할 때 포함 _once로 모든 통화를 교체 할 수 있습니다.)

Opcode 캐시는 권장합니다 APC. 이전에 StackoverFlow에서 논의되었습니다. 개인적으로, 나는/우리가 그것을 잠시 동안 사용하고 있습니다 (우리는 약 100k 방문객/하루가 3 개의 프론트 엔드와 1 개의 백엔드를 처리합니다) 매우 행복합니다. APC는 또한 require_once/include_once madness에 최적화되었습니다.

꽤 멋진 부작용은 APC도 PHP 변수를 메모리에 저장할 수 있다는 것입니다.

몇 가지 추가 포인터 :

  1. 많은 사람들이 모든 신청서를 가속화한다고 주장합니다. __ afoload.
  2. opcode 캐시를 사용하면 조건부 요구 사항 _once/include_once (예 : 루프 또는 제어 흐름)를 피하십시오.
  3. 어떤 사람들은 include_ 또는 require_once의 /absolute/path/toto/file.php가 포함 _path에 의존하는 것보다 빠르다고 말합니다.
  4. include_path의 경로 순서도 중요합니다.

도움이되기를 바랍니다.

다른 팁

나는 그것에 대해 충분히 깊이 들리지 않았기 때문에 아무것도 보장 할 수 없지만, 두 사람 사이의 속도 차이를 보았습니다. 그들은 요구가 _once 대신 include_once로 이동하기에 충분히 중요하지 않았습니다.

나는 항상 요구 사항이 필요했기 때문이라고 생각했다. 준비 및 처리 할 잠재적 오류가 하나 이상이며 필요한 파일이 존재하지 않을 때 더 많은 일을 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top