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這個組合。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/303012.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-31 11:48
下一篇 2024-12-31 11:48

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Python 常用資料庫有哪些?

    在Python編程中,資料庫是不可或缺的一部分。隨著互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的資料庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • Python通配符有哪些

    Python通配符是一種表示字元串中模糊匹配的有效工具,用於匹配與具有特定模式匹配的字元串。Python中主要的通配符有:*,?,[]和{}。 一、星號通配符 * 在Python中…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 註冊表取證工具有哪些

    註冊表取證是數字取證的重要分支,主要是獲取計算機系統中的註冊表信息,進而分析痕迹,獲取重要證據。本文將以註冊表取證工具為中心,從多個方面進行詳細闡述。 一、註冊表取證工具概述 註冊…

    編程 2025-04-29
  • Python函數類型有哪些

    本文將從以下幾個方面詳細闡述Python函數類型。 一、內置函數 Python的內置函數是指在Python編程語言中提供的可以直接使用的函數,不需要通過導入模塊等方式引入。 部分常…

    編程 2025-04-29
  • Python程序變數名有哪些

    Python是一種高級、面向對象、解釋型編程語言,它因為其簡潔明了的語法和廣泛的應用領域而被廣泛使用。在Python中,變數名是關鍵的標識符,它們用於訪問存儲在內存中的值。本文將介…

    編程 2025-04-28
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • 北京有哪些好的Python培訓機構

    想要成為一名全能開發工程師,Python是必不可少的編程語言之一。在北京,Python培訓機構也是各式各樣。下面就從教學質量、師資力量、教學內容、服務質量等多個方面,為大家推薦幾個…

    編程 2025-04-28
  • Python文本處理第三方庫有哪些

    Python是一種高級語言,它的功能非常強大和全面,其中最重要之一就是它的文本處理能力。文本處理對於自然語言處理以及大數據分析都有著非常重要的作用。Python的標準庫提供了字元串…

    編程 2025-04-27

發表回復

登錄後才能評論