首頁  >  文章  >  後端開發  >  PHP加速器eAccelerator配置使用指南

PHP加速器eAccelerator配置使用指南

WBOY
WBOY原創
2016-07-25 08:53:16920瀏覽
  1. #tar -zxvf ./eaccelerator-0.9.5-beta2.tar.bz2
  2. #cd eaccelerator-0.9.5-beta2
  3. ="/usr/local"(把PHP安裝目錄匯入到環境變量,FreeBSD預設為/usr/local)
  4. #$PHP_PREFIX/bin/phpize
  5. #./configure --enable-eaccelerator=shared - -with-php-config=$PHP_PREFIX/bin/php-config
  6. #make
  7. #make install
複製程式碼

4、ini檔案配置 安裝完成,以下開始設定php.ini檔,eAccelerator提供了兩種設定和呼叫方式,分別如下。 安裝為 Zend extension 模式:

  1. #mkdir /tmp/eaccelerator
  2. #chmod 777 /tmp/eaccelerator
>5、驗證安裝結果 透過瀏覽器存取您的phpinfo()頁面或執行 php -i 得到php配置訊息,裡面如果看到類似下面的資訊就表示安裝成功了。 This program makes use of the Zend Scripting Language Engine: Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies with eAccelerator v0.9.5-beta2, Copyright (c) 2004-2006 eAccelerator, by eAccelerator 我的機器上同時也安裝了Zend Optimizer3.0.1,所以看到的資訊如下: This program makes use of the Zend Scripting Language Engine: Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies with eAccelerator v0.9.5-beta2, Copyright (c) 2004-2006 eAccelerator, by eAccelerator with Zend Extension Manager v1.0.10, Copyright (c) 2003-2006, by Zend Technologies with Zend Optimizer v3.0.1, Copyright (c) 1998-2006, by Zend Technologies 如果你開啟了eAccelerator的debug選項,可以從日誌中看到類似下面的資訊

    eaccelerator_lock("count");
  1. eaccelerator_put("count",eaccelerator_get("count") 1));
  2. ?>
複製程式碼
eaccelerator_unlock($key) 根據 $key 釋放鎖

eaccelerator_cache_output($key, $eval_code, $ttl=0) 將 $eval_code 程式碼的輸出快取 $ttl 秒,($ttl參數同 eacclerator_put) 例如:

複製程式碼
eaccelerator_cache_result($key, $eval_code, $ttl=0) 將 $eval_code 程式碼的執行結果快取 $ttl 秒,($ttl參數同 eacclerator_put),類似 cache_output 例如:

複製程式碼
eaccelerator_cache_page($key, $ttl=0) 將目前整頁快取 $ttl 秒。 例如:

    eaccelerator_cache_page($_SERVER['PHP_SELF'].'?GET='.serialize($_GEGET),30);
  1. echo time();
  2. phpinfo();
  3. ?>
複製程式碼
eaccelerator_rm_page($key) 刪除由 eaccelerator_cache_page() 執行的緩存,參數也是 $key

2、php程式碼中使用eAccelerator加速 測試下eAccelerator強大的威力:(程式碼在 cli 模式下可能無效)

  1. class test_cache {

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

  4. echo "Object Created!
    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 "no cached!
    n";
  19. }
  20. else {
  21. echo "cached
    n";
  22. }
  23. echo $tt->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. }}
  23. defaultitems AS $item)
  24. {
  25. $this->do_fetch($item);
  26. }
  27. if (is_array($itemarray))

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

  35. // set the version number variable

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

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


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn