>백엔드 개발 >PHP 튜토리얼 >PHP 가속기 eAccelerator 구성 및 사용 가이드

PHP 가속기 eAccelerator 구성 및 사용 가이드

WBOY
WBOY원래의
2016-07-25 08:53:16944검색
  1. #tar -zxvf ./eaccelerator-0.9.5-beta2.tar.bz2
  2. #cd eaccelerator-0.9.5-beta2
  3. #export PHP_PREFIX ="/usr/local"(PHP 설치 디렉터리를 환경 변수로 가져옵니다. FreeBSD 기본값은 /usr/local입니다)
  4. #$PHP_PREFIX/bin/phpize
  5. #./configure --enable-eaccelerator= 공유 - -with-php-config=$PHP_PREFIX/bin/php-config
  6. #make
  7. #make install
코드 복사

4. ini 파일 구성 설치가 완료되면 php.ini 파일 구성을 시작하겠습니다. eAccelerator는 다음과 같은 두 가지 구성 및 호출 방법을 제공합니다. Zend 확장 모드로 설치:

  1. #mkdir /tmp/eaccelerator
  2. #chmod 777 /tmp/eaccelerator
코드 복사

5. 설치 결과를 확인합니다. 브라우저를 통해 phpinfo() 페이지를 방문하거나 php -i를 실행하여 다음과 유사한 정보가 표시되면 설치가 성공한 것입니다. 이 프로그램은 Zend 스크립팅 언어 엔진을 사용합니다. Zend 엔진 v2.1.0, 저작권 (c) 1998-2006 Zend Technologies eAccelerator v0.9.5-beta2 사용, Copyright (c) 2004-2006 eAccelerator, by eAccelerator Zend Optimizer3.0.1도 내 컴퓨터에 설치되어 있으므로 표시되는 정보는 다음과 같습니다. 이 프로그램은 Zend 스크립팅 언어 엔진을 사용합니다. Zend 엔진 v2.1.0, 저작권 (c) 1998-2006 Zend Technologies eAccelerator v0.9.5-beta2 사용, Copyright (c) 2004-2006 eAccelerator, by eAccelerator Zend Extension Manager v1.0.10 사용, 저작권 (c) 2003-2006, Zend Technologies 제공 Zend Optimizer v3.0.1 사용, 저작권 (c) 1998-2006, Zend Technologies 제공 eAccelerator의 디버그 옵션을 켜면 로그에서 다음과 유사한 정보를 볼 수 있습니다.

  1. eaccelerator_lock("count");
  2. eaccelerator_put("count",eaccelerator_get("count") 1)) ;
  3. ?>
코드 복사

eaccelerator_unlock($key) $key를 기반으로 잠금 해제

eaccelerator_cache_output($key, $eval_code, $ttl=0) $ttl 초 동안 $eval_code 코드의 출력을 캐시합니다($ttl 매개변수는 eacclerator_put과 동일합니다). 예를 들어:

코드 복사

eaccelerator_cache_result($key, $eval_code, $ttl=0) $eval_code 코드의 실행 결과를 $ttl 초 동안 캐시합니다($ttl 매개변수는 eacclerator_put과 동일함). 예를 들어:

코드 복사

eaccelerator_cache_page($key, $ttl=0) $ttl 초 동안 현재 전체 페이지를 캐시합니다. 예를 들어:

  1. eaccelerator_cache_page($_SERVER['PHP_SELF'].'?GET='.serialize($_GET),30);
  2. echo time();
  3. phpinfo();
  4. ?>
코드 복사

eaccelerator_rm_page($key) eaccelerator_cache_page()에 의해 실행된 캐시를 삭제합니다. 매개변수도 $key

입니다.

2. eAccelerator를 사용하여 PHP 코드 가속화 eAccelerator의 강력한 성능을 테스트하십시오. (이 코드는 cli 모드에서 유효하지 않을 수 있습니다.)

  1. class test_cache {
  2. var $pro = 'hello';
  3. function test_cache() {

  4. echo "객체가 생성되었습니다!
    n";
  5. }
  6. function func() {
  7. echo ', the world!' ;
  8. }
  9. function now($t) {
  10. echo date('Y-m-d H:i:s', $t);
  11. }
  12. }

  13. $tt = eaccelerator_get("test_tt");

  14. if (!$tt)
  15. {
  16. $tt = new test_cache;
  17. eaccelerator_put("test_tt", $tt);
  18. echo "캐시되지 않음!
    n";
  19. }
  20. else {
  21. echo "캐시됨
    n";
  22. }

  23. pro;
  24. $tt->func();
  25. $tt->now(time() 86400);
  26. ?>
코드 복사

另外,據說在著名的vBulletin 3.60Beta版裡面已經整合了對eAccelerator的支援。 一段來自vBulletin裡面的程式碼

  1. // ##############

  2. // ecelerator
  3. /**

  4. * 用於從eAccelerator 取得和初始化vBulletin 資料儲存的類別
  5. *
  6. * @package vBulletin
  7. * @version $Revision: 0.1 $
  8. * @date $Date: 2005/06 /12 13:14:18 $
  9. */
  10. class vB_Datastore_eAccelerator extends vB_Datastore
  11. {
  12. /**
  13. * 從 eAccelerator 取得資料儲存的內容
  14. *
  15. * @param array 要從資料儲存中取得的項目陣列
  16. *
  17. * @return void
  18. */
  19. function fetch($itemarray) if (!function_exists('eaccelerator_get'))
  20. {
  21. trigger_error("eAccelerator not installed", E_USER_ERROR);
  22. }} defaultitems AS $item)
  23. {
  24. $this->do_fetch($item);
  25. }
  26. if (is_array($itemarray))

  27. {
  28. foreach ($itemarray AS $item)
  29. {
  30. $this->do_fetch($item);
  31. }
  32. }
  33. $this->check_options( );

  34. // set the version number variable

  35. $this->registry->versionnumber =& $this->registry->options['templateversion'];
  36. }
  37. /**

  38. * 從共享記憶體取得資料並偵測錯誤
  39. *
  40. * @param string 資料儲存項目的標題
  41. *
  42. * @return void
  43. */
  44. function do_fetch($title)
  45. {
  46. $data = eaccelerator_get($title);
  47. if ($data === null)
  48. { // appears its not there, lets grab the data, lock the shared memory and put it in
  49. $data = '';
  50. $dataitem = $this->dbobject-$data = '';
  51. $dataitem = $this->dbobject-$data = '';
  52. $dataitem = $this->dbobject-$data = '';
  53. $dataitem = $this->dbobject- >query_first("
  54. SELECT title, data FROM " . TABLE_PREFIX . "datastore
  55. WHERE title = '" . $this->dbobject->escape_string($title) ."'
  56. ")'
  57. "); >if (!empty($dataitem['title']))
  58. {
  59. $data =& $dataitem['data'];
  60. $this->build($dataitem['title'] , $dataitem['data']);
  61. }
  62. }
  63. $this->register($title, $data);
  64. }
  65. /**
  66. * 更新對應的快取檔案
  67. *
  68. * @param string 資料儲存項目的標題
  69. *
  70. * @return void
  71. */
  72. function build($title, $data)
  73. {
  74. if (!function_exists('eaccelerator_put'))
  75. {
  76. trigger_error("eAccelerator not installed, Enot);
  77. eaccelerator_lock($title);
  78. eaccelerator_put($title, $data);
  79. eaccelerator_unlock($title);
  80. }
  81. }
>複製程式碼


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