이 글에서는 성능 향상을 위해 PHP에서 정의하는 대신 hidef 확장을 사용하는 방법을 주로 소개하고, 설치 방법과 사용 예도 소개합니다. 웹사이트는 새로운 상수를 추가하고 열어야 합니다. 로컬 config.php 파일을 보면 정의 성능을 향상시키기 위해 몇 년 전에 테스트했던 hidef 및 apc 솔루션이 생각납니다.
내 프로그램에는 개발, 테스트 및 프로덕션 서버에 대한 구성이 다릅니다. 상수의 경우 배열을 사용하여 정의해야 하는 모든 상수를 정의한 다음 apc_load_constants 함수가 있는지 감지합니다. 일괄적으로요. apc를 사용할 때 상수를 추가할 때마다 $key를 수정해야 적용됩니다.
이제 테스트 및 프로덕션 서버 PHP가 5.4로 업그레이드된 후 opcode 캐시는 Zend opcache를 사용하며 APC는 더 이상 설치되지 않습니다. apc 사용자 캐시를 사용하기 때문에 apcu를 추가로 설치했는데, 사용법은 apc와 완전히 똑같기 때문에 프로그램을 전혀 변경할 필요가 없습니다. 하지만 apcu는 apc_load_constants, apc_define_constants를 지원하지 않으므로 apc 솔루션을 사용할 수 없습니다. 공식 홈페이지에 가서 2012년 7월 12일에 출시된 stable 버전인 hidef 0.1.13의 최신 버전을 설치했는데, 벌써 1년이 넘었습니다.
정의 시간을 테스트하기 위해 간단한 프로그램을 작성했습니다. 1000회 실행하는 데 약 2.8ms가 걸립니다. 따라서 중간 규모 웹 사이트(예: PHP가 하루에 천만 번 실행됨)의 경우 페이지당 25개의 상수가 정의되면 하루에 약 10000000*25/1000*2.8=700000ms, 즉 700초가 소요됩니다. hidef를 사용하면 하루에 거의 700초의 PHP 실행 시간을 절약할 수 있습니다.
읽기 성능을 살펴보겠습니다. 테스트에서는 1w번 상수로 읽으며 값은 모두 1로 각각 37ms와 0.7ms입니다. 그러니까 하루에 천만 번, 페이지당 평균 20개의 상수를 사용하면 740초가 걸리고, hidef를 사용하면 14초, 뭐 또 700초 이상이 걸립니다.하루에 1400초의 PHP 실행 시간을 절약하는 것은 중요하지 않을 수 있지만 항상 좋고 시도해 볼 가치가 있습니다. 결국 매개변수를 변경할 가능성은 매우 적습니다.
정의 매개변수를 수정해야 하는 경우 구성 파일을 수정한 다음 php-fpm을 다시 로드하세요.
hidef의 구체적인 설치 방법은 Define 성능을 향상시키는 PHP 확장인 hidef 설치 및 사용을 참고하세요.
Baidu에서 "hidef"를 검색하면 세 번째는 내 블로그를 복사한 웹사이트입니다. 게시물:( 그리고 제가 직접 개선 사항을 게시했습니다. 성능 정의 PHP 확장 Hidef의 설치 및 사용은 처음 세 페이지에서 찾을 수 없습니다. Baidu는 원본을 식별하는 데 약간의 차이가 있는 것 같습니다.
Baidu에서 "hidef PHP"를 검색하면 , 웹사이트가 1위, 공식 웹사이트가
gg에서 첫 번째 공식 웹사이트를 검색하고, 세 번째가 또 다른 원본 기사이고,
360에서 "hidef php"를 검색합니다. 첫 번째는 사본이고, 세 번째는 또 다른 원본 기사입니다.
첨부된 구성은 원본입니다. 샘플 코드:
코드는 다음과 같습니다.
if (function_exists('apc_load_constants')) { function define_array($key, $arr, $case_sensitive = false) { if (!apc_load_constants($key, $case_sensitive)) { apc_define_constants($key, $arr, $case_sensitive); } } } else { function define_array($key, $arr, $case_sensitive = false) { foreach ($arr as $name => $value) { define($name, $value, $case_sensitive); } } } $constants = array( 'HX' => 1, 'BLOG_URL' => '//www.jb51.net/', 'WWW_URL' => '//www.jb51.net/', ); define_array('hx_defined',$constants);
<?php $t1 = microtime(1); $constants = array( 'hx1' => 1, 'hx2' => '2', 'hx3' => '3', 'hx4' => '4', 'hx5' => '5', 'hx6' => '6', 'hx7' => '7', 'hx8' => '8', 'hx9' => '9', 'hx10' => '10', ); function define_array($key, $arr) { foreach ($arr as $name => $value) { define($name.$i, $value); } } for($i=0;$i<100;$i++) { define_array($i,$constants); } $t2 = microtime(1); echo ($t2-$t1)*1000; //读性能 $t1 = microtime(1); for($i=0;$i<10000;$i++) { $t = hx1; } $t2 = microtime(1); echo ' '.($t2-$t1)*1000; $t1 = microtime(1); for($i=0;$i<10000;$i++) { $t = HX; } $t2 = microtime(1); echo ' '.($t2-$t1)*1000;
관련 권장 사항:
파일 읽기, 편집 및 저장을 위한 PHP 작업
위 내용은 PHP 테스트 hidef 성능의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!