首頁 後端開發 php教程 php加速器(XCache),php以模块的形式实现LAMP

php加速器(XCache),php以模块的形式实现LAMP

Jun 23, 2016 pm 01:31 PM

PHP简介

PHP是通用服务器端脚本编程语言,其主要用于web开发以实现动态web页面,它也是最早实现将脚本嵌入HTML源码文档中的服务器端脚本语言之一。同时,php还提供了一个命令行接口,因此,其也可以在大多数系统上作为一个独立的shell来使用。


PHP Zend Engine

Zend Engine是开源的、PHP脚本语言的解释器,由C语言开发且经过高度优化,并能够做为PHP的后端模块使用。Zend Engine为PHP提供了内存和资源管理的功能以及其它的一些标准服务,其高性能、可靠性和可扩展性在促进PHP成为一种流行的语言方面发挥了重要作用。

Zend Engine的出现将PHP代码的处理过程分成了两个阶段:首先是分析PHP代码并将其转换为称作Zend opcode的二进制格式(类似Java的字节码),并将其存储于内存中;第二阶段是使用Zend Engine去执行这些转换后的Opcode。


PHP的Opcode

Opcode是一种PHP脚本编译后的中间语言,就像Java的ByteCode,或者.NET的MSL。PHP执行PHP脚本代码一般会经过如下4个步骤(确切的来说,应该是PHP的语言引擎Zend):

1、Scanning(Lexing)(扫描) ―― 将PHP代码转换为语言片段(Tokens)

2、Parsing(分析) ―― 将Tokens转换成简单而有意义的表达式

3、Compilation(编译) ―― 将表达式编译成Opocdes

4、Execution(执行) ―― 顺次执行Opcodes,每次一条,从而实现PHP脚本的功能


php的加速器

PHP进程(对应一次请求)编译的结果无法被第二个PHP进程使用(opcode无法共享),这使得每一次对动态页面的请求都需要进行扫描,分析,编译,执行,即使是一模一样的请求也需要也需要经历这4个步骤。然后就有了各种PHP加速器。

php的加速器是基于PHP的特殊扩展机制,如opcode缓存扩展,也可以将opcode缓存于php的共享内存中,从而可以让同一段代码的后续重复执行时跳过编译阶段以提高性能。由此也可以看出,这些加速器并非真正提高了opcode的运行速度,而仅是通过分析opcode后并将它们重新排列以达到快速执行的目的。常见的php加速器有:APC (Alternative PHP Cache),eAccelerator,XCache,NuSphere PhpExpress,Zend Optimizer和Zend Guard Loader........其中XCache快速而且稳定,经过严格测试且被大量用于生产环境。项目地址:http://xcache.lighttpd.net/


XCache的安装

安装的版本是xcache-3.1.0.tar.bz2

1、安装

[root@www ~]# lltotal 20532.....-rw-r--r--.  1 root root    146444 Jul  5 10:41 xcache-3.1.0.tar.bz2.....[root@www ~]# tar xf xcache-3.1.0.tar.bz2 [root@www ~]# cd xcache-3.1.0[root@www xcache-3.1.0]# /usr/local/php-5.4/bin/phpize  #准备一个模块以实现编译php支持                                      #第三方模块(与当前的php整合)Configuring for:PHP Api Version:         20100412Zend Module Api No:      20100525Zend Extension Api No:   220100525
登入後複製

/usr/local/php-5.4/bin/phpize 这里必须要执行这一步,执行完成之后,安装包的目录下才会有configure脚本文件


[root@www xcache-3.1.0]# ./configure --enable-xcache --with-php-config=/usr/local/php-5.4/bin/php-config.......[root@www xcache-3.1.0]# make && make install
登入後複製

安装结束时,会出现类似如下行:

Installing shared extensions:/usr/local/php-5.4/lib/php/extensions/no-debug-non-zts-20100525
登入後複製


2、编辑php.ini,整合php和xcache

首先将xcache提供的样例配置导入php.ini

[root@www xcache-3.1.0]# mkdir /etc/php.d[root@www xcache-3.1.0]# cp xcache.ini /etc/php.d
登入後複製

说明:xcache.ini文件在xcache的源码目录中。


接下来编辑/etc/php.d/xcache.ini,找到zend_extension开头的行,修改为如下行:

extension = /usr/local/php-5.4/lib/php/extensions/no-debug-non-zts-20100525/xcache.so
登入後複製

注意:如果php.ini文件中有多条zend_extension指令行,要确保此新增的行排在第一位。

xcache.ini中的几项参数:

; to enable : xcache.size=64M etc (any size > 0) and your system mmap allowsxcache.size  =               60M                             #用于缓存的内存大小; set to cpu count (cat /proc/cpuinfo |grep -c processor)xcache.count =                 1                              #设置成cpu的核心数; just a hash hints, you can always store count(items) > slotsxcache.slots =                8K; ttl of the cache item, 0=foreverxcache.ttl   =                 0; interval of gc scanning expired items, 0=no scan, other values is in secondsxcache.gc_interval =           0
登入後複製

完成之后中心加载服务

[root@www xcache-3.1.0]# service php-fpm restartGracefully shutting down php-fpm . doneStarting php-fpm  done
登入後複製


访问配置页面:

已加载xcache


用ab命令对php服务器进行压测,命令格式如下

ab -n num -c num url

-n #共多少次请求

-c #并发请求数


先把缓存功能关掉:

[root@www php.d]# mv xcache.ini xcache.ini.bak[root@www php.d]# service php-fpm restartGracefully shutting down php-fpm . doneStarting php-fpm  done
登入後複製

开始测试:

[root@www ~]# ab -n 200 -c 5 http://admin.xiaoxiao.com/index.phpThis is ApacheBench, Version 2.3 <$Revision: 1554214 $>Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking admin.xiaoxiao.com (be patient)Completed 100 requestsCompleted 200 requestsFinished 200 requests
登入後複製


启动xcache:

[root@www php.d]# mv xcache.ini.bak xcache.ini[root@www php.d]# service php-fpm restartGracefully shutting down php-fpm . doneStarting php-fpm  done[root@www ~]# ab -n 500 -c 20 http://admin.xiaoxiao.com/index.php.........
登入後複製

速度是两倍多一点,效果还是挺明显的~~

.................^_^




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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

描述紮實的原則及其如何應用於PHP的開發。 描述紮實的原則及其如何應用於PHP的開發。 Apr 03, 2025 am 12:04 AM

SOLID原則在PHP開發中的應用包括:1.單一職責原則(SRP):每個類只負責一個功能。 2.開閉原則(OCP):通過擴展而非修改實現變化。 3.里氏替換原則(LSP):子類可替換基類而不影響程序正確性。 4.接口隔離原則(ISP):使用細粒度接口避免依賴不使用的方法。 5.依賴倒置原則(DIP):高低層次模塊都依賴於抽象,通過依賴注入實現。

解釋PHP中晚期靜態結合的概念。 解釋PHP中晚期靜態結合的概念。 Mar 21, 2025 pm 01:33 PM

文章討論了PHP 5.3中介紹的PHP中的晚期靜態結合(LSB),允許靜態方法的運行時間分辨率調用以更靈活的繼承。 LSB的實用應用和潛在的觸摸

如何在系統重啟後自動設置unixsocket的權限? 如何在系統重啟後自動設置unixsocket的權限? Mar 31, 2025 pm 11:54 PM

如何在系統重啟後自動設置unixsocket的權限每次系統重啟後,我們都需要執行以下命令來修改unixsocket的權限:sudo...

如何用PHP的cURL庫發送包含JSON數據的POST請求? 如何用PHP的cURL庫發送包含JSON數據的POST請求? Apr 01, 2025 pm 03:12 PM

使用PHP的cURL庫發送JSON數據在PHP開發中,經常需要與外部API進行交互,其中一種常見的方式是使用cURL庫發送POST�...

框架安全功能:防止漏洞。 框架安全功能:防止漏洞。 Mar 28, 2025 pm 05:11 PM

文章討論了框架中的基本安全功能,以防止漏洞,包括輸入驗證,身份驗證和常規更新。

自定義/擴展框架:如何添加自定義功能。 自定義/擴展框架:如何添加自定義功能。 Mar 28, 2025 pm 05:12 PM

本文討論了將自定義功能添加到框架上,專注於理解體系結構,識別擴展點以及集成和調試的最佳實踐。

See all articles