您的位置:

php的加速器(php加速器有哪些)

本文目录一览:

如何设置nginx和apache

我们依然尽可能采用yum来安装我们需要的软件,由系统官方维护的软件,其安全性和稳定性都值得信赖,并且容易管理,升级方便,但是在CentOS和

RHEL的官方yum源中暂时没有Nginx等软件包,所以我们需要使用EPEL的yum源。EPEL是什么,EPEL的yum源怎么添加,点击这里查

看。

本文将要介绍的Nginx+Apache结构,其实就是Nginx做前端,Apache做后端,充分发挥他们各自的优势之处。Nginx对于高并发性能出

众,Proxy功能强效率高,占用系统资源少,而Apache在高并发时对队列的处理比FastCGI(Nginx需要通过fastcgi等方式运行

php)更好,并且在处理动态php页面时,mod_php也比php-cgi更稳定更高效。

也就是说,我们的目的是,由Nginx来接收客户端的请求,如果是动态页面请求,就交给Apache处理,然后经由Nginx再返回给客户端,其余的请

求,则由Nginx自己处理,然后把结果返回给客户端,。当然了,你完全可以让Nginx只做Proxy功能,所有的请求都交给

Apache,Tomcat等处理,本文使用前者。

但是,在本文中,我们实现的是在一台服务器里一个Nginx加一个Apache的简单结构,在实际应用中,可能前端是由一台或多台Nginx组成的代理服务器,后端则是多台Apache或其他Web服务器,再加上多种第三方软件而组成的集群。

前提约定:假设我们系统默认主站点名是,网站根目录是/var/www/server110

第一步,安装并配置Nginx,安装完之后,配置文件都在/etc/nginx目录下,主设置文件/etc/nginx/nginx.conf:

[root@test ~]# yum -y install nginx

[root@test ~]# vi /etc/nginx/nginx.conf

user nginx;

worker_processes 2;

error_log /var/log/nginx/error.log;

pid /var/run/nginx.pid;

events {

use epoll;

worker_connections 2048;

}

http {

include /etc/nginx/mime.types;

include /etc/nginx/proxy.conf;

include /etc/nginx/gzip.conf;

default_type application/octet-stream;

index index.html index.htm index.php;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

sendfile on;

tcp_nopush on;

server_tokens off;

keepalive_timeout 60;

server_names_hash_bucket_size 128;

server {

listen 80;

server_name ;

root /var/www/server110;

location ~* .*\.(gif|jpg|jpeg|png|bmp|ico|css|js|txt|flv|swf|mid|doc|ppt|xls|pdf|txt|mp3|wma)$ {

expires 2d;

}

# 如果你需要客户端缓存的内容以及媒体,图片等文件固定放置一些目录下的话,就把上面那个

# location注释掉,用下面这种方式

# location ~ ^/(images|javascript|js|css|flash|media|static)/ {

# expires 2d;

#}

location ~ .*\.(php?|cgi|pl|py)$ {

proxy_pass ;

}

location ~ /\.ht {

deny all;

}

location ~ /.+\.(inc|conf|cnf) {

deny all;

}

access_log /var/log/nginx/server110-access.log main;

#access_log off

}

# Load config files from the /etc/nginx/conf.d directory

include /etc/nginx/conf.d/*.conf;

}

[root@test ~]# vi /etc/nginx/proxy.conf

proxy_redirect off;

proxy_hide_header Vary;

proxy_set_header Accept-Encoding '';

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

client_max_body_size 10m;

client_body_buffer_size 128k;

proxy_connect_timeout 90;

proxy_send_timeout 90;

proxy_read_timeout 90;

proxy_buffer_size 4k;

proxy_buffers 32 4k;

proxy_busy_buffers_size 64k;

[root@test ~]# vi /etc/nginx/gzip.conf

gzip on;

gzip_http_version 1.0;

gzip_disable "MSIE [1-6]\.";

gzip_disable "Mozilla/4";

gzip_comp_level 3;

gzip_proxied any;

gzip_vary on;

gzip_buffers 4 16k;

gzip_min_length 1100;

gzip_types text/plain text/xml text/css application/xml application/xhtml+xml application/rss+xml application/atom_xml application/javascript application/x-javascript;

为了让nginx.conf简洁,我把一些相关的共通设定放到同一个专门的文件里,然后在主配置文件nginx.conf里加载。如果你使用了VirtualHost运营多个站点,你可以根据不同站点的需求而配置不同的设定文件,然后分别在各自的server域里加载。

第二步,安装并配置Apache,配置文件在/etc/httpd/下,我们修改主配置文件/etc/httpd/conf/httpd.conf,配置文件太长,我只写我需要改的地方:

[root@test ~]# yum -y install httpd

[root@test ~]# vi /etc/httpd/conf/httpd.conf

Listen 80

↓改成

Listen 127.0.0.1:8888

DocumentRoot "var/www/html"

↓改成

DocumentRoot "/var/www/server110"

Directory "/var/www/html"

↓改成

Directory "/var/www/server110"

Options Indexes FollowSymLinks

↓改成如下,允许CGI,SSI

Options Includes ExecCGI FollowSymLinks

AllowOverride None

↓改成如下,支持.htaccess

AllowOverride All

Order allow,deny

Allow from all

/Directory

ServerSignature On

↓改成如下,在现实错误页面的时候不会显示服务器和apache的版本

ServerSignature Off

#AddHandler cgi-script .cgi

↓改成如下,cgi脚本使用.cgi,.pl,.py

AddHandler cgi-script .cgi .pl .py

第三步,设置VirtualHost(如果你需要在本机上运营多个站点,否则略过此步):

1.修改/etc/httpd/conf/httpd.conf:

#NameVirtualHost *:80

↓改成如下

NameVirtualHost 127.0.0.1:8888

#追加下面4行,是我们的默认主站

VirtualHost 127.0.0.1:8888

ServerName

/VirtualHost

Include virtual/*.conf

2.修改/etc/nginx/nginx.conf,在server{}域的后面追加如下一句:

include /etc/nginx/virtual/*.conf;

3.假设我们还要在本机上运行一个站点叫:

[root@test ~]# mkdir /etc/nginx/virtual/

[root@test ~]# mkdir /etc/httpd/virtual/

[root@test ~]# vi /etc/nginx/virtual/

server {

listen 80;

server_name ;

root /var/www/cooliter;

location ~* .*\.(gif|jpg|jpeg|png|bmp|ico|css|js|txt|flv|swf|mid|doc|ppt|xls|pdf|txt|mp3|wma)$ {

expires 24h;

}

location ~ .*\.(php?|cgi|pl|py)$ {

proxy_pass ;

}

location ~ /\.ht {

deny all;

}

location ~ /.+\.(inc|conf|cnf) {

deny all;

}

access_log /var/log/nginx/cooliter-access.log main;

#access_log off

}

[root@test ~]# vi /etc/httpd/virtual/

VirtualHost 127.0.0.1:8888

ServerAdmin webmaster@cooliter.com

DocumentRoot /var/www/cooliter

ServerName

UseCanonicalName Off

ErrorLog logs/

CustomLog logs/ common

/VirtualHost

第四步,安装MySql,参照这篇教程。

第五步,安装php及其他常用组件:

[root@test ~]# yum -y install php php-mysql php-gd php-xml php-mbstring php-mcrypt

第六步,安装php加速器eaccelerator和php-pecl-memcached模块,提高性能:

[root@test ~]# yum install php-eaccelerator php-pecl-memcached

设定文件分别是/etc/php.d/eaccelerator.ini和/etc/php.d/memcached.ini,如果你采用默认设置,就不需要修改设定文件了。

第七步,安装并配置Zend提供的php加速、解密软件,yum源里没有,直接从官方下载即可,不需要编译,下载的时候注意根据你的系统选择32位或者64位的版本。

1:如果你用的php是php5.3.x版本,需要安装的是Zend Guard Loader:

[root@test ~]# tar -xzvf ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz

[root@test ~]# ls ZendGuardLoader-php-5.3-linux-glibc23-i386/

README.txt php-5.3.x

#小提示,看解压目录下的README.txt里有使用说明

[root@test ~]# mv -T ZendGuardLoader-php-5.3-linux-glibc23-i386 /usr/lib/php/ZendGuardLoader-php-5.3

[root@test ~]# vi /etc/php.d/zend.ini

#添加如下内容,保存退出

[Zend Guard Loader]

zend_extension="/usr/lib/php/ZendGuardLoader-php-5.3/php-5.3.x/ZendGuardLoader.so"

zend_loader.enable=1

zend_loader.disable_licensing=0

zend_loader.obfuscation_level_support=3

2:如果你用的php是php5.2或更早的版本,需要安装的是Zend Optimizer:

[root@test ~]# tar -xzvf ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz

[root@test ~]# ls ZendOptimizer-3.3.9-linux-glibc23-i386

EULA-ZendOptimizer Inventory.xml LICENSE README-ZendOptimizer data md5

#小提示1,看解压目录下的README-ZendOptimizer里有使用说明

[root@test ~]# ls ZendOptimizer-3.3.9-linux-glibc23-i386/data

4_2_0_comp 4_3_x_comp 5_0_x_comp 5_2_x_comp

4_2_x_comp 4_4_x_comp 5_1_x_comp poweredbyoptimizer.gif

#小提示2,解压目录下的data目录下根据不同的php版本提供了不同的so文件,假设我们的版本是php5.1.x的

[root@test ~]# mv -T ZendOptimizer-3.3.9-linux-glibc23-i386 /usr/lib/php/ZendOptimizer-3.3.9

[root@test ~]# vi /etc/php.d/zend.ini

#添加如下内容,保存退出

[Zend Optimizer]

zend_optimizer.optimization_level=1

zend_extension = "/usr/lib/php/ZendOptimizer-3.3.9/data/5_1_x_comp/ZendOptimizer.so"

第八步,启动Apache和Nginx,并测试(MySql就不测试了):

[root@test ~]# /etc/init.d/httpd start

[root@test ~]# /etc/init.d/nginx start

[root@test ~]# chkconfig httpd on

[root@test ~]# chkconfig nginx on

[root@test ~]# mkdir /var/www/server110

[root@test ~]# echo "hello,server110" /var/www/server110/index.html

[root@test ~]# echo -e "?php\nphpinfo();" /var/www/server110/index.php

打开浏览器分别访问一下index.html和index.php,然后关闭Apache,再分别访问一下(php页面应该就访问不了了)。

测试gzip是否有效,因为我们设置了gzip_min_length为1100,所以低于1100bytes的页面不会压缩,你测试的页面内容最好大于1100bytes。

[root@test ~]# curl -I -H "Accept-Encoding:gzip,deflate"

HTTP/1.1 200 OK

Server: nginx

Date: Fri, 22 Jul 2011 04:45:30 GMT

Content-Type: text/plain

Last-Modified: Fri, 22 Jul 2011 04:40:30 GMT

Connection: keep-alive

Vary: Accept-Encoding

Expires: Sun, 24 Jul 2011 04:45:30 GMT

Cache-Control: max-age=172800

Content-Encoding: gzip ---证明服务器支持gzip压缩

后话,本文旨在介绍这种结构的搭建方法,所以用到的配置参数比较少,关于更详细的参数设置和优化,需要读者你自己根据实际情况结合官方帮助文档进一步去测试。

哪种php加速器最靠谱APC,XCache,eAccelerator

这些加速器统称Opcode Cache,全部都支持opcode cache功能,性能差距也不大,zhao yi说得对,哪个用在你的项目中没问题就先用着哪个。

除opcode cache外,人们也经常用他们的变量缓存功能(与memcached不一样,apc/eac/xcache他们是存在本地内存里的,免去了网络开销,更快),早期的eac不支持变量缓存,后来支持了。xcache是中国人作品,几乎跟apc功能一样。

此外,08年的时候,我们曾经遭遇APC Bomb问题,据国外社区说xcache在这个问题上表现好一点,后来我们用另外的方法搞定了,没有测试数据表明是不是xcache好一点。

PHP中4个加速,缓存扩展的区别和选用建议

1、eAccelerator

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

2、memcached

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。从文字上可以理解为:内存缓存扩展,并且针对于集群服务器使用较多,主要用于分布式缓存,算是数据库缓存。

3、Alternative PHP Cache(APC缓存)

Alternative PHP Cache (APC缓存)是一种对PHP有效的开放源高速缓冲储存器工具,他能够缓存Opcode(目标文件)的PHP中间码。 APC的缓存分两部分:系统缓存和用户数据缓存. 系统缓存 是自动使用的,是指APC把PHP文件源码的编译结果缓存起来,然后在再次调用时先对比时间标记。如果未过期,则使用缓存代码运行。默认缓存 3600s(一小时).但是这样仍会浪费大量CPU时间.因此可以在php.ini中设置system缓存为永不过期(apc.ttl=0).不过如果这样设置,改运PHP代码后需要restart一下您的web服务器(比如apache…).目前对APC的性能测试一般指的是这一层cache;从文字上理到:Alternative PHP Cache(APC缓存)也算是一种内存缓存扩展,算是数据库缓存扩展。

4、Xcache

是一个开源的opcode缓存器/优化器, 他能够提高服务器上的PHP性能,他通过把编译PHP后的数据缓冲到共享内存从而避免重复的编译过程, 能够直接使用缓冲区已编译的代码从而提高速度. 通常能够提高您的页面生成速率2到5倍, 降低服务器负载。 其实它与eAccelerator一样是PHP加速器扩展。

以上就是他们的作用与区别,简单一点就是:eAccelerator,xcache是PHP缓存扩展,memcached、APC缓存是数据库缓存扩展,一般两者只有要安装其中一个即可,不要贪多。另外,实际测试中发现当Cache数量超过一定阀值的时候,APC的性能不如Memcache。所以在扩展的选择上,本人一般会选择xcache+memcached这个组合。