SymLinks와 PHP 포함(성능)

SymLinks와 PHP 포함(성능)

Apache를 실행하는 Linux 서버에서 처리하는 데 이 2개 중 어느 것이 더 쉽고 빠르나요?

ㅏ) PHP 파일을 가리키는 심볼릭 링크:

file-sym.php ---> file-orig.php

비)다음과 같은 file-inc.php다른 PHP 파일( )을 포함하는 PHP 파일( ):file-orig.php

file-inc.php의 내용

<?php 
    include('file-orig.php'); 
?>

벤치마크를 해본 사람이 있는지 궁금합니다!

답변1

내 직감에 따르면 해당 체인의 첫 번째 링크를 처리할 때 더 적은 데이터를 읽어야 하기 때문에 심볼릭 링크가 더 빠를 것입니다. 차이가 많이 나는지는 잘 모르겠지만 두 제품을 비교해서 차이를 확인해 보세요.

ㅏ)

  1. 파일 읽기(ext2+에서는 심볼릭 링크가 inode에 포함되어 있으므로 탐색은 하나만 있음)
  2. 다른 파일 읽기
  3. PHP를 실행

비)

  1. 파일 읽기
  2. PHP를 실행
  3. 다른 파일 읽기
  4. PHP를 실행

include() 변형은 Windows 사용자에게 좋은 것 같습니다. Windows 사용자는 시스템에 심볼릭 링크를 가질 수 없기 때문입니다.

답변2

많은 관리자는 보안 및 성능상의 이유로 Apache 심볼릭 링크를 비활성화합니다.

성능을 위해서는 Apache 튜닝에 대한 이 페이지를 참조하십시오.http://httpd.apache.org/docs/2.2/misc/perf-tuning.html

URL 공간에 FollowSymLinks 옵션이 없거나 SymLinksIfOwnerMatch 옵션이 있는 경우 Apache는 심볼릭 링크를 확인하기 위해 추가 시스템 호출을 실행해야 합니다. 파일 이름 구성요소당 하나의 추가 호출. 예를 들어 다음과 같은 경우가 있습니다.

 <Directory />
 DocumentRoot /www/htdocs 
 Options SymLinksIfOwnerMatch
 </Directory>

URI /index.html에 대한 요청이 이루어집니다. 그런 다음 Apache는 /www, /www/htdocs 및 /www/htdocs/index.html에서 lstat(2)를 수행합니다. 이러한 lstats의 결과는 캐시되지 않으므로 모든 단일 요청에서 발생합니다.

환경과 코드에 따라 심볼릭 링크가 어떻게 기하급수적인 성능 문제가 될 수 있는지 확인할 수 있습니다.

관련 정보