Back to writing
미분류 2 min read HYEONG HWAN, MUN

PHP7.0 은 얼마나 빠를까?

* PHP7 을 설치하시려면 다음의 글 (https://blog.lael.be/post/2407)을 참조하세요. (Apache with Mod-PHP7)

* PHP를 최신버전으로 구축하고 싶다면 https://blog.lael.be/post/2600 글로 이동하세요. (Nginx + PHP7-FPM + MariaDB)

 

최근 궁금한 것이 두가지 생겨서 테스트해보았습니다.

 

1. PHP 업로드 중에 읽기 요청이 들어오면 어떻게 되나? Read lock 이 걸리나?

물론 파일 변경이 0.005초 이내로 이루어지지만 그 사이에 read 가 일어날 경우 어떻게 되는지 궁금하여 실험해 보았습니다.

테스트 결과 : php 업로드 중에 읽기 요청이 들어오면 업로드 된만큼 해석해서 처리 -> 100% 에러발생

따라서 변경중에 엑세스가 일어나지 않게 maintenance mode 를 만들거나 linux rename 같은 atomic 함수를 이용하라고 하는군요.

 

참조 : http://stackoverflow.com/questions/15478298/what-happens-when-php-file-is-replaced-while-being-executed-on-linux-apache-serv

참조 : http://stackoverflow.com/questions/9021849/does-apache-read-lock-files-before-serving-them

참조 : http://superuser.com/questions/101676/is-there-some-difference-between-mv-and-cp-rm-the-old-file-on-unix

 

2. PHP 7.0 이 공식 문서에 따르면 이전버전보다 2배 빠르다고 한다. 정말일까?

 

공식 문서 : http://php.net/index.php

스크린샷 2015-07-28 오후 4.36.08

 

 

기존 단독 서비스 서버(CentOS 6.6 64bit, Apache 2.4, Mod PHP 5.5)와,

신규 구축 서버(Ubuntu 12.04 64bit, Apache 2.4, Mod PHP 7.0beta2)의 속도 측정 결과.

두 서버의 하드웨어 스펙은 비슷합니다.

 

- 테스트 환경

mysql 패키지가 기본 php 번들에서 빠져서 그누보드 테스트는 할 수 없었습니다. mysqli 및 pdo-mysql 을 지원하는 프로그램을 테스트 합니다.

(참고 : https://wiki.php.net/rfc/remove_deprecated_functionality_in_php7#extmysql)

워드프레스 내의 페이지 하나를 새로고침하면서 최빈값 측정. 크롬 개발자 도구의 Timing 항목 사용.​

 

 

X-Powered-By: PHP/5.5.24

스크린샷 2015-07-28 오후 4.11.21

 

 

X-Powered-By: PHP/7.0.0beta2

스크린샷 2015-07-28 오후 4.11.35

 

- 측정결과 (TTFB 만 비교)
페이지 처리속도가 681ms 에서 225ms 로 3.02배 빨라짐. (향상됨)

--

 

http://www.php-benchmark-script.com/ 를 사용해서 함수 위주의 벤치마킹 실시.

하드웨어 사양을 동일하게 하고 운영체제를 Clean 설치 한 후에 PHP버전만 다르게해서 테스트 실시.

 

- PHP 5.5 서버에서 실행.
스크린샷 2015-07-31 오후 10.22.52

 

- PHP 7.0 서버에서 실행.

스크린샷 2015-07-31 오후 10.38.20

 

2배 정도 빨라진 것 같습니다. (twice as fast as PHP 5.6)

Filed under