ホームページ >バックエンド開発 >PHPチュートリアル >eAccelerator には (PHP コード アクセラレータ) が付属しています

eAccelerator には (PHP コード アクセラレータ) が付属しています

WBOY
WBOYオリジナル
2016-06-13 13:17:45869ブラウズ

eAccelerator 配置(PHP代码加速器)


  eAccelerator是一个自由开放源码php加速器,优化和动态内容缓存,提高了php脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。 它还有对脚本起优化作用,以加快其执行效率。使您的PHP程序代码执效率能提高1-10倍;

?

首先您要安装好PHP,然后再来编译安装 eaccelerator,过程如下。
我们从官方下的版本是 eaccelerator-0.9.5.2.tar.bz2   
编译安装;   
# tar xvf eaccelerator-0.9.5.2.tar.bz2   
# cd cd eaccelerator-0.9.5.2   
# export PHP_PREFIX="/usr"   
# $PHP_PREFIX/bin/phpize   
# ./configure \   --enable-eaccelerator=shared \   --with-php-config=$PHP_PREFIX/bin/php-config   
# make   
# make install   
注:通过export 来设置php所在的安装路径变量,我的PHP是安装在/usr目录下,系统用redhat。其它系统如果默认安装也大体差不多;如果不一样,就自己指定一下;   
完成安装后,eaccelerator.so模块位于 /usr/lib/php/extensions目录中,您的系统如果和我不一样,您自己应该安装在哪了;  # echo "/usr/lib/php/extensions" > /etc/ld.so.conf   
# ldconfig   注:更新动态链接库地址;   
修改配置文件;   
我们首先要修改;php.ini,然后重启Apache;   
在php.ini文件中,加入;
zend_extension="/usr/lib/php/extensions/eaccelerator.so" 注:模块的具体位置;   
eaccelerator.shm_size="16" 注:共享内存大小;   
eaccelerator.cache_dir="/home/eaccelerator" 注:缓存目录;   
eaccelerator.enable="1"   
eaccelerator.optimizer="1"   
eaccelerator.check_mtime="1"   
eaccelerator.debug="0"   
eaccelerator.filter=""   
eaccelerator.shm_max="0"   
eaccelerator.shm_ttl="0"   
eaccelerator.shm_prune_period="0"   
eaccelerator.shm_only="0"   
eaccelerator.compress="1"   
eaccelerator.compress_level="9"   注:其中,模块的具体位置必须正确,以您的系统为准;共享内存大小可以自己调整,感觉16M还是可以的,根据服务器的情况,你自己调一下。
缓存目录可以自己指定,我们在这里指定的是 /home目录上的 eaccelerator 目录,如果没有,自己创建一个;权限是0777;
以上的配置是把 eaccelerator 做为 Zend 的扩展模块来编译的办法。如果您的PHP是用安装模式编译的,要把 zend_extension改为zend_extension_ts 。
如果您是把 eaccelerator 做为 PHP的一个扩展,要用下面的配置 ;   
extension="eaccelerator.so"   
eaccelerator.shm_size="16"   
eaccelerator.cache_dir="/home/eaccelerator"   
eaccelerator.enable="1"   
eaccelerator.optimizer="1"   
eaccelerator.check_mtime="1"   
是不是生效了,您要查看 /home/eaccelerator 目录中,当Apache服务器启动了,你随便点几个页面,如果在这个目录中,出现文件了。那就是生效了。如果没任何文件,就要找原因了 ……   这两个配置文件,是不是管用。要你自己根据情况来修改。
# mkdir /home/eaccelerator
# chmod 777 /home/eaccelerator   注:创建缓存目录池,权限是777

?

?


eaccelerator.shm_size="32"

  eAccelerator 可以使用的共享内存的数量 (以兆为单位) . "0" 是指操作系统的默认值. 默认值是 "0".可根据服务器的实际情况来调整,16,32,64,128都是可以的。

  eaccelerator.cache_dir="/home/php/tmp"

  这个目录是给磁盘缓存使用. eAccelerator 在这里储存预先编译好的代码, 进程数据, 内容以及用户的自定义内容. 同样的数据也能被储存在共享内存中 (这样可以提高访问速度). 默认的设置是 "/tmp/eaccelerator".

  eaccelerator.enable="1"

  开启或关闭 eAccelerator。"1" 为开启,"0" 为关闭。默认值为 "1"。

  eaccelerator.optimizer="1"

  启或关闭内部优化器,可以提升代码执行速度。"1" 为开启,"0" 为关闭。默认值为 "1"。

  eaccelerator.check_mtime="1"

  打开或者关闭 PHP 的文件修改检查. "1" 是指打开, "0" 是指关闭. 如果您在修改以后重新编译 PHP 的文件,那么您应当设置为 "1". 默认值是 "1".

  eaccelerator.debug="0"

  开启或关闭调试日志记录。"1" 为开启,"0" 为关闭。默认值为 "0"。会将缓存命中得记录写入日志。

  eaccelerator.filter=""

  判断哪些 PHP 文件必须缓存。您可以指定缓存和不缓存的文件类型(如 "*.php *.phtml"等)

パラメータが「!」で始まる場合、これらのパラメータに一致するファイルはキャッシュから無視されます。デフォルト値は「」です。つまり、すべての PHP ファイルがキャッシュされます。

eaccelerator.shm_max="0"

「 eaccelerator_put() 」関数を使用する場合、大きすぎるファイルを共有メモリに格納することは禁止されています。このパラメータは、ストレージに許可される最大値をバイト単位で指定します (10240、10K、1M)。 「0」は制限なしを意味します。デフォルト値は「0」です。

eaccelerator.shm_ttl="0"

eAccelerator が新しいスクリプトの共有メモリ サイズの取得に失敗すると、最後の "shm_ttl" 秒間にアクセスされなかったすべてのスクリプト キャッシュが共有メモリから削除されます。デフォルト値は「0」で、キャッシュされたファイルが共有から削除されないことを意味します。

eaccelerator.shm_prune_period="0"

eAccelerator が新しいスクリプトの共有メモリ サイズの取得に失敗すると、「shm_prune_period」秒より古いキャッシュされたスクリプトを共有メモリから削除しようとします。デフォルト値は「0」で、キャッシュされたファイルが共有から削除されないことを意味します。

eaccelerator.shm_only="0"

コンパイルされたスクリプトのディスクへのキャッシュを許可または無効にします。このオプションは、セッション データとコンテンツ キャッシュには影響しません。デフォルト値は「0」です。これは、キャッシュにディスクと共有メモリを使用することを意味します。

eaccelerator.compress="1"

圧縮コンテンツのキャッシュを許可または無効にします。デフォルト値は「1」で、圧縮が許可されることを意味します。

eaccelerator.compress_level="9"

コンテンツ キャッシュの圧縮レベルを指定します。デフォルト値は最高レベルの「9」です。

eaccelerator.keys = "disk_only"

eaccelerator.session = "disk_only"

eaccelerator.content = "disk_only"

コンテンツ キャッシュの保存場所を設定します。次のように設定できます。

shm_and_disk 共有キャッシュとディスク (デフォルト)

Shm にはデフォルトで共有メモリがあります。共有メモリがいっぱいであるか、サイズが "eaccelerator.shm_max" の値を超える場合、共有メモリはハードディスクに保存されます

shm_only は共有メモリにのみ保存されます

Disk_only はハードディスクにのみ保存されます

none はデータをキャッシュしません

eaccelerator.allowed_admin_path = "/var/www/html/web/eaccelerator"

これはコントロールパネルのアドレスです

インストール パッケージには control.php があり、これを Web サイト上の任意のディレクトリにコピーして表示および管理に使用できます。これを指定しないと、キャッシュされたコンテンツを表示するときにエラーが発生します。

最後に、eAccelerator の設定を見てみましょう

; 加速器

[加速器]

zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"

eaccelerator.shm_size="128"

eaccelerator.cache_dir="/tmp/eaccelerator"

eaccelerator.enable="1"

eaccelerator.optimizer="1"

eaccelerator.check_mtime="1"

eaccelerator.debug="0"

eaccelerator.filter=""

eaccelerator.shm_max="0"

eaccelerator.shm_ttl="3600"

eaccelerator.shm_prune_period="3600"

eaccelerator.shm_only="0"

eaccelerator.compress="1"

eaccelerator.compress_level="9"

eaccelerator.keys = "disk_only"

eaccelerator.sessions = "disk_only"

eaccelerator.content = "disk_only"

eaccelerator.allowed_admin_path = "/var/www/html/web/eaccelerator"

さらに、eAccelerator のインストールについてもお話しましょう

# wget http://bart.eaccelerator.net/source/0.9.6/eaccelerator-0.9.6.tar.bz2

# tar -jxvf eaccelerator-0.9.6.tar.bz2

# cd eaccelerator-0.9.6

# /usr/local/php/bin/phpize

# ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config

# make && make install

-----------------------------------------------------
open_basedir設定できません 訪問する解決策の 1 つ

警告: 不明: open_basedir 制限が有効です。File() が許可されたパス内にありません: (.:/tmp/)、行 0 が不明です

致命的なエラー: /XX/index.php、行 0 の open_basedir 制限が読み込めません

この問題は何度も発生しており、私はいつもシステムと PHP に関連していると思っていましたが、よく考えてみると、そうではないと思いました。 PHP の再コンパイルを開始したところ、open_basedir の設定時にエラーが発生しなかったことがわかりました^^??、?? この情報から、何か使えそうな気がしました。解決策に必要な拡張機能をすべてインストールしたところ、php.ini に設定されている拡張機能を 1 つずつ閉じて、後で eaccelerator を再起動してもエラーが発生しませんでした。問題は eaccelerator です。Google で検索したところ、eaccelerator のバージョンは 0.9.6 以降であることがわかりました。現時点では、open_basedir の制限を解除する必要があります。 🎜>

eaccelerator 0.9.6 をダウンロードした後はインストールしないでください。解凍後、ファイル eaccelerator.c を見つけて、次のように 1156 行目を開きます:
if (PG(open_basedir) && php_check_open_basedir(realname TSRMLS_CC)) {
次のように変更します:
if (PG(open_basedir) && php_check_open_basedir(file_handle->filename TSRMLS_CC)) {

修正後、コンパイルすればOKです

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。