前一段时间完成了服务器从FreeBSD4.10到6.1的升级,同时把PHP也升级到了最新的PHP5.1.4,Apache也升级到了最新的Apache2.2,为了更好的提高系统的性能考虑对PHP再进行一些优化,前两年接触过MMCache和eAccelerator,尤其对eAccelerator非常喜欢,这次优化也选择了它,下面整理一些文档和大家分享。
目录:
一、eAccelerator介绍
1、背景
2、原理
二、安装和配置
1、支持平台
2、系统要求
3、安装
4、php.ini文件配置
5、验证安装
三、使用eAccelerator开发PHP代码
1、API文档和接口说明
2、开发范例
四、附录和参考资料
一、eAccelerator介绍
1、背景
eAccelerator 是一个免费开源的PHP加速、优化、编译和动态缓存的项目,它可以通过缓存PHP代码编译后的结果来提高PHP脚本的性能,使得一向很复杂和离我们很远的PHP脚本编译问题完全得到解决。通过使用eAccelerator,可以优化你的PHP代码执行速度,降低服务器负载,可以提高PHP应用执行速度最高达10倍。
eAccelerator 项目诞生于2004年,当时它是作为 Turck MMCache 项目的一个分支提出并投入开发的。 Turck MMCache 由 Dmitry Stogov 开发,是个非常优秀的PHP内存缓存加速系统,如今仍然有很大部分 eAccelerator 的代码应用到该项目中,目前该项目有很长时间没有更新了,对于最新的PHP5.x的支持还未推出。
2、原理
eAccelerator 通过把经过编译后的PHP代码缓存到共享内存中,并在用户访问的时候直接调用从而起到高效的加速作用。它的效率非常高,从创建共享内存到查找编译后的代码都在非常短的时间内完成,对于不能缓存到共享内存中的文件和代码,eAccelerator还可以把他们缓存到系统磁盘上。
eAccelerator 同样还支持PHP代码的编译和解释执行,你可以通过encoder.php脚本来对php代码进行编译达到保护代码的目的,经过编译后的代码必须运行在安装了eAccelerator的环境下。eAccelerator编译后的代码不能被反编译,它不象其他一些编译工具那样可以进行反编译,这将使得代码更加安全和高效。
二、eAccelerator安装配置
1、支持平台
由于aAccelerator提供了大部分基于共享内存的API,所以在*nix的平台上将得到更好的支持,虽然也发布了基于windows平台的binary版本,但我在这里就只提供基于*nix平台的配置和说明,目前可以支持的平台包括Linux, FreeBSD, OpenBSD, Mac OS X, Solaris, AIX en HP-UX。
2、系统要求
php4 or php5
autoconf
automake
libtool
m4
eAccelerator 只支持使用 mod_php 或者 fastcgi mode 安装的PHP
3、安装
先去eAccelerator官方下载最新版的源码包:eaccelerator-0.9.5-beta.tar.bz2
4、ini文件配置
安装完成,下面开始配置php.ini文件,eAccelerator提供了两种配置和调用方式,分别如下。
安装为 Zend extension 模式:
如果你使用了thread safe模式安装的PHP,你必须使用 “zend_extension_ts” 替换第一行的 “zend_extension”.
安装为 PHP extension 模式:(这是大部分采用的方式)
有关php.ini文件的详细配置说明,请参照源码目录的README文档或者访问官方文档:ini setting
完成安装配置后,我们最后要创建缓存目录
5、验证安装结果
通过浏览器访问您的phpinfo()页面或者运行 php -i 得到php配置信息,里面如果看到类似下面的信息就表示安装成功了。
我的机器上同时还安装了Zend Optimizer3.0.1,所以看到的信息如下:
如果你打开了eAccelerator的debug选项,可以从日志中看到类似下面的信息
以上信息表示文件都得到了缓存和命中。
至此,我们就完成了全部的安装和配置,好好享受eAccelerator带给你的惊喜吧,根据Michael的测试,效果的确相当的好。
三、在PHP中可以使用eAccelerator的API开发
1、API和文档说明:
eAccelerator提供了便捷便捷而又稳定的本机缓存实现方式,由于大部分代码实现基于共享内存,所以只能在*nix平台中使用,Windows平台Michael就暂时不知道何时有这方面的支持了。
eAccelerator提供如下的API接口和文件:(下述文件均在源码包的doc/php/目录下)
文件列表:
接口列表:
有关上述文档详细说明请参考官方文档:API Documents
下面有部分网友翻译后的接口说明:
2、PHP代码中使用eAccelerator加速
下面有一个测试的代码,你可以测试一下eAccelerator强大的威力:(该代码在 cli 模式下可能无效)
さらに、eAccelerator のサポートは有名な vBulletin 3.60Beta バージョンに統合されていると言われています。以下は vBulletin のコードの一部です
コードをコピーします。 コードは次のとおりです:
// ############################## ##### #######################################
// eAccelerator
/**
* eAccelerator から vBulletin データストアを取得して初期化するためのクラス
*
* @package vBulletin
* @version $Revision: 0.1 $
* @date $Date: 2005/06/12 13:14:18 $
*/
class vB_Datastore_eAccelerator extends vB_Datastore
{
/**
* eAccelerator からデータストアの内容を取得します
*
* @param array データストアから取得する項目の配列
*
* @return void
*/
function fetch($itemarray)
{
if (!function_exists('eaccelerator_get'))
{
trigger_error("eAccelerator がインストールされていません", E_USER_ERROR)
}
foreach ($this->defaultitems AS $ item)
{
$this->do_fetch($item);
if (is_array($itemarray))
{
foreach ($itemarray AS) $item)
{
$this->do_fetch($item);
}
}
$this->check_options(); // バージョン番号変数を設定します
$this->registry->versionnumber =& $this->registry->options['templateversion']
}
/* *
* 共有メモリからデータを取得し、エラーを検出します
*
* @param データストア項目の文字列タイトル
*
* @return void
*/
function do_fetch($title)
{
$data = eaccelerator_get($title);
if ($data === null)
{ // が表示されますそこにはありません。データを取得し、共有メモリをロックして、
$data = '';
$dataitem = $this->dbobject->query_first("
SELECT title, data FROM " . TABLE_PREFIX . "datastore
WHERE title = '" . $this->dbobject->escape_string($title) ."'
");
if (!empty($dataitem) ['title ']))
{
$data =& $dataitem['data'];
$this->build($dataitem['title'], $dataitem['data' ]);
}
}
$this->register($title, $data);
/**
* 適切なキャッシュ ファイルを更新します
*
* @param データストア アイテムの文字列タイトル
*
* @return void
*/
function build($title, $data)
{
if (!function_exists('eaccelerator_put'))
{
trigger_error("eAccelerator がインストールされていません", E_USER_ERROR) );
}
eaccelerator_lock($title);
eaccelerator_unlock($title);
四、付录和参考资料
eAccelerator 官方网站 :http://eaccelerator.net
eAccelerator を使用している Web サイト ?
http://www.advfn.com/ (2006/03/03) Advanced Financial Network は、1 日あたり 700 万を超えるページ ヒットを処理します。
http://www.domaincity.co.uk/ (2005/01/29) Andrew Hutchings - Linux の第一人者 - 3 つのノードのうち 2 つで mmcache の代わりに eaccelerator を使用しているという簡単なメッセージです。ラウンド ロビン クラスター、1 日あたり 250 万ヒット。今後数週間でこれを 2 倍にし、新しいクラスターを実装する予定です。
http://www.ets-online.de/ (2005/02/07) Denny Reeh - システム開発者 - e/t/s 教材メディアは、PHP で書かれた e ラーニング サーバー (遠隔学習システム) を提供しています。弊社では、お客様向けのシステムを主に自社でホスティングしております。したがって、5 つのライブサーバー (freebsd、apache2、php4、eaccelerator) があり、毎月 550 万件のヒットがあります。まず、eAccelerator がなければ、パフォーマンスを向上させるためにより多くのサーバーをインストールする必要がありました。次に、スクリプトの中程度の応答時間を 4 分の 1 にすることで顧客の利便性を向上させました。
http://www.gorgoyle.com/ (2005/08/03) Gorgoyle.com は、また別の Debian 個人サーバーです。道に迷った数人のインターネット放浪者が通り過ぎるだけです。新鮮な空気を必要とする素晴らしい Celeron 433 を搭載しています。 … eAccelerator を使用すると、非常に印象的な結果が得られます。ユーザーは、サーバーの速度が 10000% 向上したと言っています (冗談ではありません!)。皆さんに感謝し、これからも頑張ってください。サーバー: eAccelerator 0.9.5 beta 1 Apache/2.0.55 (Debian) mod_python/3.1.3 Python/2.3.5 PHP/4.4.2-1 mod_ssl/2.0.55 OpenSSL/0.9.8a mod_perl/2.0.2
http://www.mafia-inc.de/ (2005/05/24) The Mafia-Incorporated は、毎日約 2,500,000 ページのインプレッションがあり、5000 人を超えるユーザーがいる成功したブラウザ ゲームです。サーバー: PHP バージョン 4.3.10-9、eAccelerator 0.9.2a、Debian 、Apache 2.0.53
http://www.mondespersistants.com/ (2005/01/07) 6,000 の他のゲーム指向のフランスの Web サイト月間 000 ページロード。 http://guildes.mondespersistants.com は完全な PHP5 OO 開発です。これらのウェブサイトは freebsd / apache 1.3 / php 5.0.3 / eaccelerator 0.9.2 で実行されています
http://www.moviemaze.de/ (2005/12/09) Markus Ostertag - Movie Maze はドイツの大手オンラインです-トレーラー、壁紙、レビュー、ニュースなどが掲載された雑誌。現在、eAccelerator を備えた 3 台のサーバー (Apache 2、PHP4 を備えた Suse および Debian) を使用し、3 TB を超えるデータを ~1 Mio に提供しています。毎月のユーザー。
http://www.rtvslo.si (2005/01/04) スロベニア国立 RTV 局とフォーラムを備えたニュース/その他のポータル。年間 3,500 人を超えるユーザーと 37,000 件を超えるフォーラム メッセージ。一般向けの 2 つのラウンドロビン サーバーと 1 つの管理者サーバー。毎月 6,000,000 ページロード。
http://www.shroomery.org/ (2006/03/28) 月間 20,000,000 ページの、キノコと菌学に関するサイト。 Web サーバーとデータベース サーバーは、Gentoo を実行する 4GB および SCSI RAID5 を備えた同一のデュアル 64 ビット Xeon です。 eAccelerator は、ページ生成時間を 0.1 秒未満に抑えるのに役立ちます。
http://www.sourceforge.net/ (2005/04/25) SourceForge.net は世界最大のオープン ソース ソフトウェア開発 Web サイトであり、100,000 を超えるプロジェクトと 1,000,000 人を超える登録ユーザーを一元的にホストしています。プロジェクト、問題、コミュニケーション、コードを管理するためのリソース。 SourceForge.net には、インターネット上で利用できるオープン ソース コードとアプリケーションの最大のリポジトリがあり、世界中のどのサイトやネットワークよりも多くのオープン ソース開発製品をホストしています。 SourceForge.net は、私たちがホストするプロジェクトやオープンソース コミュニティにさまざまなサービスを提供します。 eAccelerator は、フロントページの Web サーバー クラスターで使用されます。
eAccelerator を有効にしたホスティングを提供している企業はありますか?
http://lylix.net/ (2006/04/29) Gentoo Linux サーバー上で Apache/2.0.55、PHP 5.0.5、および eAccelerator 0.9.5 beta1 を使用したウェブホスティングを提供します。 32 ビットおよび 64 ビット プラットフォームを含む、高品質の仮想プライベート サーバー (VPS) ホスティングのプロバイダーでもあります。ほとんどの VPS イメージには、eAccelerator がインストールおよび構成された LAMP 環境がプリインストールされています。
http://www.ulyssis.org 学生にシェルおよびインターネット サービスを非常に安い価格で提供する学生団体。