【php精品源码栏目提醒】:网学会员为需要php精品源码的朋友们搜集整理了PHP APC的安装与高级使用 - 其它资料相关资料,希望对各位网友有所帮助!
PHP APC 的安装与高级使用 2009-12-01 17:30 佚名 新浪博客 我要评论0 字号:T TPHP APC 一般是下载源代码然后 phpize 来编译安装,它从安装后就开始在后台为您的
PHP应用服务了。
在接下来的文章中就为大家介绍了具体的使用方法。
AD: 51CTO 云计算架构师峰会 抢票进行中!
PHP 语言是一个功能强大的嵌入式 HTML 脚本语言,很多程序员都在使用这一语言来进行网站的创建。
PHP APC全称是 Alternative
PHP Cache官方翻译叫”可选
PHP 缓存”但我个人觉得应该叫”另一个
PHP 缓存”。
深入探讨
PHP 表单的实现方法 推荐几款功能强大的
PHP 编辑器 深入剖析
PHP 变量的具体使用方法
PHP 类 Snoopy 的特点分析 详细解读
PHP _FILES 数组的内容因为这个东西如果叫”可选
PHP 缓存”容易给人一种可要可不要的不怎么有用的错觉。
APC 的主页是:http://pecl.
php.net /package/apc.目前的版本是 3.0.14通过 PECL安装需要
php4.3.0 或更高版本.
PHP APC 的安装:一般是下载源代码然后 phpize 来编译安装安装完以后在加上
php.ini 里加上extensionapc.so这么一行就行了.
PHP APC 的使用:APC 的使用其实倒说不上.APC 是个优化器自安装之日起就默默地在后台为您的
PHP 应用服务了.您的所有
PHP 代码会被缓存起来. 另外APC 可提供一定的内存缓存功能.但是这个功能并不是十分完美有报告说如果频繁使用 APC 缓存的写入功能会导致不可预料的错误.如果想使用这个功能可以看看 apc_fetchapc_store 等几个与 apc 缓存相关的函数. 从
PHP5.2 开始APC 引入了一个小甜饼解决了困扰大家已久的大文件上传的进度条问题.
PHP APC 的高级使用 1.缓存期限: APC 的缓存分两部分:系统缓存和用户数据缓存.系统缓存 是自动使用的是指 APC 把
PHP 文件
源码的编译结果缓存起来然后在再次调用时先对比时间标记。
如果未过期则使用缓存代码运行。
默认缓存 3600s一小时.但是这样仍会浪费大量 CPU 时间.因此可以在
php.ini 中设置 system 缓存为永不过期apc.ttl0.不过如果这样设置改运
php 代码后需要 restart 一下您的 web 服务器比如 apache….目前对APC 的性能测试一般指的是这一层 cache 用户数据缓存 由用户在编写
php 代码时用 apc_store 和 apc_fetch 函数操作读取、写入的.如果量不大的话我建议可以使用一下.如果量大我建议使用 memcache 会更好. 如果要享受 APC 带来的缓存大文件上传进度的特性需要在
php.ini 中将 apc.rfc1867 设为 1并且在表单中加一个隐藏域 APC_UPLOAD_PROGRESS这个域的值可以随机生成一个 hash以确何唯一.具体例子请参见前面给出的链接. 2.状态控制和分析:
PHP APC 的
源码包自带了一个 apc.
php您可以将这个文件上传到web 服务器的某个目录下用浏览器访问这会显示当前的状态.我们可以从这里的表格分析当前的缓存状况作出进一步优化. apc-info-clublocalhost2.png 这是某 test 站点的状态.您可以慢慢分析这个工具会提供很多有用的工具.比如您可以看到哪些文件经常被包含访问您缓存的哪个变量经常被读取或经常被更新等. 最后顺便提一句有独立报告说PHPAPC 的代码缓存、优化效果要高出 zend 优化器.就算不是真的他开源而又免费实在是一个相当不错的选择 Nginx
PHP-FPM APC绝妙的组合1 2010-05-07 09:02 黄永兵 译 51CTO.com 我要评论1 字号:T T本文将介绍目前让
PHP 最快的方法:Nginx
PHP-FPM APC,看似有些复杂,实际上我们只需要几个步骤就可以完成,并且性能远超 Apache,有兴趣的朋友不妨去试一试。
AD:51CTO 云计算架构师峰会 抢票进行中! 【51CTO 独家特稿】本文所介绍的方法应该是目前让
PHP 最快的办法:Nginx
PHP-FPM APC。
我们将从安装 Nginx http 服务器、
PHP 和
PHP-FPM 补丁,以及 APC,详细的讲解这种方法的具体配置及应用,最终的效果如何?相信会让你大吃一惊。
相关文章推荐:Nginx http 服务相关的配置文件 NginxPHP 配置相关进程的简要介绍 背景 过去两年多来,我们的网站一直运行 Apachemod_
php 模块,大多数时候这个组合应付得过来,但随着流量的增加,我们注意到 Apache 已经显得很吃力了,它开始疯狂地吃内存,CPU 也被全部抢占去了,我们需要找到一个更快的方法来解决问题。
Nginx 是一个不错的选择,很多指标都超过了 Apache,如 I/O、CPU、内存和请求数/秒等,如果需要,随时可以从 Google 搜索相关信息。
从我个人的测试结果来看,Nginx 和 Apache之间的差异是很明显的,不好意思,因为是非正式测试,因此相关数字我就不公布了,这也不是本文的重点。
让我更自信的是,我只需要几个步骤就可以让性能远超 Apache。
PHP-FPM? 很多人配置 Nginx 时可能都会选择来自 LightTPD 项目的 spawn-fcgi 解析
PHP,但使用spawn-fcgi 有些问题,因此我打算放弃它另觅别的办法。
PHP-FPM 是
PHP FastCGI Process 即Manager 的缩写,
PHP FastCGI 进程管理器,实际上它是
PHP 的一个补丁,旨在将 FastCGI进程管理整合进
PHP 包中。
注意:即使你坚持使用 Apache,也有很多原因跳过 mod_
php,直接通过 FastCGI 解析
PHP。
使用 mod_
php 时,Apache 处理载入
PHP 的每个请求会载入所有的库,这是一个巨大的无畏开销。
如果使用 FastCGI,
PHP 的行为更象应用程序服务器,
PHP-FPM 以及 spawn-fcgi按需要载入和杀掉
PHP 实例,这样做有很多好处,其中很重要的一点就是减少内存开销。
让我们开始吧 我们使用的是全新安装的 Ubuntu 8.10 Intrepid,第一件事情是安装所有的依赖包。
1. sudo apt-get install make bison flex gcc patch autoconf subversion l ocate 2. sudo apt-get install libxml2-dev libbz2-dev libpcre3-dev libssl-dev zlib1g-dev libmcrypt-dev libmhash-dev libmhash2 libcurl4-openssl-dev libpq-dev libpq5 libsyck0-dev 3. 准备好依赖包之后,我们就可以开始。
编译
PHP 我们下载的是
PHP 5.2.8 源代码包,还有对应的
PHP-FPM 补丁,我们先打上补丁,然后再编译。
1. cd /usr/local/src/ 2. sudo wget http://us.
php.net/get/
php-5.2.8.tar.gz/from/this/mirror 3. sudo tar zvxf
php-5.2.8.tar.gz 4. sudo wget http://
php-fpm.anight.org/downloads/head/
php-5.2.8-fpm-0.5 .10.diff.gz 5. sudo gzip -cd
php-5.2.8-fpm-0.5.10.diff.gz sudo patch -d
php-5.2.8 -p1 6. cd
php-5.2.8 7. sudo ./configure --enable-fastcgi --enable-fpm --with-mcrypt --with- zlib --enable-mbstring --disable-pdo --with-pgsql --with-curl --disab le-debug --enable-pic --disable-rpath --enable-inline-optimization -- with-bz2 --with-xml --with-zlib --enable-sockets --enable-sysvsem --e nable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --enable-x slt --enable-memcache --enable-zip --with-pcre-regex 8. sudo make all install 9. sudo strip /usr/local/bin/
php-cgi 如果在运行上面命令时遇到错误,很可能是因为缺少依赖包造成的。
另外,确保你正确启用和禁用了特定的
PHP 配置选项。
紧接着我们通过 PECL 安装一些将会用到的模块: 1. sudo pecl install memcache 2. sudo pecl install apc 3. sudo pecl install syck-beta 在安装 apc 模块时,请务必关闭 Apache 选项,如果你没有关闭,它也会提醒你。
接下来复制我们常用的
php.ini: 1. sudo cp /usr/local/src/
php-5.2.8/
php.ini-recommended /usr/local/lib/
php.ini 2. 最后,我们建立符号链接: 1. sudo mkdir /etc/
php/ 2. sudo ln -s /usr/local/lib/
php.ini /etc/
php/
php.ini 3. sudo ln -s /usr/local/etc/
php-fpm.conf /etc/
php/
php-fpm.conf
PHP 编译到此结束,剩下要做的事情是修改
php-fpm.conf 设置,用文本编辑器打开/etc/
php/
php-fpm.conf,将进程属主用户修改为 www-data,这个文件比较大,因此最好使用搜索功能,我想修改的值分别位于 51、52、63 和 66 行。
1. www-datavalue 2. www-datavalue 3. www-datavalue 4. www-datavalueNginx 和编译
PHP 一样非常简单: 1. cd .. 2. sudo wget http://sysoev.ru/nginx/nginx-0.6.35.tar.gz 3. sudo tar zxvf nginx-0.6.35.tar.gz 4. sudo rm -f nginx-0.6.35.tar.gz 5. cd nginx-0.6.35 6. sudo ./configure --sbin-path/usr/local/sbin --with-http_ssl_module --without-mail_pop3_module --without-mail_imap_module --without-mail_ smtp_module --with-http_stub_status_module 7. sudo make sudo make install 再创建一个链接: 1. sudo ln -s /usr/local/nginx/conf /etc/nginx 2. 下一步是可有可无的,但我一直使用至今,说说也无妨。
打开/etc/nginx/nginx.conf,最终修改结果如下: 1. user www-data 2. worker_processes 6 3. 4. events 5. worker_connections 1024 6. 7. 8. http 9. include mime.types 10. default_type application/octet-stream 11. sendfile on 12. keepalive_timeout 10 10 13. 14. gzip on 15. gzip_comp_level 1 16. gzip_proxied any 17. gzip_types text/plain text/html text/css application/x-javascrip t text/xml application/xml application/xmlrss text/javascript 18. 19. log_format main remote_addr - remote_user time_local 20. request status body_bytes_sent http_refer er 21. http_user_agent http_x_forwarded_for 22. 23. access_log /var/log/nginx_access.log main 24. 25. error_log /var/log/nginx_error.log debug 26. 27. include /usr/local/nginx/sites-enabled/ 28. 我们也设置了一些 FastCGI 参数,让
PHP 不会噎着,也可以避免 Nginx 503 错误,打开/etc/nginx/fastcgi_params,添加以下参数: 1. fastcgi_connect_timeout 60 2. fastcgi_send_timeout 180 3. fastcgi_read_timeout 180 4. fastcgi_buffer_size 128k 5. fastcgi_buffers 4 256k 6. fastcgi_busy_buffers_size 256k 7. fastcgi_temp_file_write_size 256k 8. fastcgi_intercept_errors on 最后,我们创建一个 SystemV 风格的启动脚本,保存为/etc/init.d/nginx。
1. /bin/sh 2. BEGIN INIT INFO 3. Provides: nginx 4. Required-Start: all 5. Required-Stop: all 6. Default-Start: 2 3 4 5 7. Default-Stop: 0 1 6 8. Short-Description: starts the nginx web server 9. Description: starts nginx using start-stop-daemon 10. END INIT INFO 11. 12. PATH/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 13. DAEMON/usr/local/sbin/nginx 14. NAMEnginx 15. DESCnginx 16. 17. test -x DAEMON exit 018.19. Include nginx defaults if available20. if -f /etc/default/nginx then21. . /etc/default/nginx22. fi23.24. set -e25.26. case 1 in27. start28. echo -n Starting DESC: 29. start-stop-daemon --start --quiet --pidfile /usr/local/nginx /logs/NAME.pid 30. --exec DAEMON -- DAEMON_OPTS31. echo NAME.32. 33. stop34. echo -n Stopping DESC: 35. start-stop-daemon --stop --quiet --pidfile /usr/local/nginx/ logs/NAME.pid 36. --exec DAEMON37. echo NAME.38. 39. restartforce-reload40. echo -n Restarting DESC: 41. start-stop-daemon --stop --quiet --pidfile 42. /usr/local/nginx/logs/NAME.pid --exec DAEMON43. sleep 144. start-stop-daemon --start --quiet --pidfile 45. /usr/local/nginx/logs/NAME.pid --exec DAEMON -- D AEMON_OPTS46. echo NAME.47. 48. reload49. echo -n Reloading DESC configuration: 50. start-stop-daemon --stop --signal HUP --quiet --pidfile /usr/l ocal/nginx/logs/NAME.pid 51. --exec DAEMON52. echo NAME.53. 54. 55. N/etc/init.d/NAME56. echo Usage: N startstoprestartforce-reload 257. exit 1 58. 59. esac 60. 61. exit 0 不要忘了设置可执行权限。
设置你的网站 这一阶段的工作主要按你自己的习惯完成,这里仅做一个粗略的介绍。
首先我们创建一个目录来存放我们的网站配置文件: 1. sudo mkdir /usr/local/nginx/sites-enabled 2. sudo ln -s /usr/local/nginx/sites-enabled /etc/sites 3. 接下来为我们的网站增加一个 conf 文件/etc/sites/default.conf,内容如下: 1. server 2. listen :80 3. 4. location / 5. root /var/www/default/pub 6. index index.
php 7. 8. if file exists return it right away 9. if -f request_filename 10. break 11. 12. 13. otherwise rewrite the fucker 14. if -e request_filename 15. rewrite . /index.
php1 last 16. break 17. 18. 19. 20. 21. if the request starts with our frontcontroller pass it on to fastcgi 22. location /index.
php 23. 24. fastcgi_pass 127.0.0.1:9000 25. fastcgi_param SCRIPT_FILENAME /var/www/default/pubf astcgi_script_name 26. fastcgi_param PATH_INFO fastcgi_script_name 27. include /usr/local/nginx/conf/fastcgi_params 28. 29. 上面这个 conf 文件控制网站的前端风格,其中包括 Wordpress,cake 等,注意静态内容不是通过 FastCGI 解析的。
另外,你可能需要修改/var/www/default 文件,设置网站文件的默认放置位置。
启动 我们的工作结束了,启动看一下效果。
1. sudo
php-fm start 2. sudo /etc/init.d/nginx start
PHP5.4 或引入
PHP-FPM nginx 运行
PHP 更轻松 2010-05-10 08:30 Simoneau sitepoint.com 我要评论0 字号:T Tnginx 通过 FastCGI 运行
PHP 比 Apache 包含
PHP 环境有明显的优势最近有消息称,
PHP5.4将很有可能把
PHP-FPM 补丁包含在内核里,nginx 服务器平台上运行
PHP 将更加轻松。
AD:51CTO 云计算架构师峰会 抢票进行中! 前面我曾介绍过 Nginx
PHP-FPM APC绝妙的组合,最近有消息称,
PHP5.4 将很有可能把
PHP-FPM
PHP FastCGI 进程管理器 补丁包含在内核里。
这个新闻对于在 nginx服务器平台上运行
PHP 的人们来说是一个极大地惊喜。
或许你会有这样的疑问:“
PHP-FPM是什么东西?我们为什么要关注它?”
PHP-FPM 是为
PHP 内核编写的补丁,用来根据需要处理 FastCGI 进程的启动,停止以及重启。
这是非常关键的功能,因为 nginx 只能通过 FastCGI 实现同
PHP 的接口。
nginx 不能像 Apache 那样把所有的
PHP 环境加载到自身。
nginx 通过 FastCGI 运行
PHP 比 Apache 包含
PHP 环境有明显的优势: ◆较低的内存占用率(因为 nginx 单独运行时不用加载整个
PHP 环境)。
◆轻松地管理用户权限 因为
PHP 可以在你的服务器进程中管理不同的用户。
◆当
PHP 崩溃时,nginx 可以照常运行。
它的缺点是,相比之下需要安装及设置 mod_
php,nginx,
PHP 和 FastCGI。
在过去,这种安装工作需要从 LightTPD 工程中增选 spawn-fcgi 脚本,然后使用它启动 FastCGI 进程。
可是这种安装存在一些问题:它很脆弱(当进程停止之后可能无法正常重启)而且这种安装方法非常繁琐。
安装并配置好 nginx 之后你还需要下载 LightTPD,针对性地设置脚本,将其设置为自动启动,然后保障这些同时正常地运行。
如果你习惯于“拿来主义”,开箱即用mod_
php那么也许会让你确信 nginx 是个劣质品,尤其是当你刚刚升级了服务器替换了原来的精简的平台的时候。
使用
PHP-FPM。
这个补丁会把 FastCGI 进程管理功能嵌入到
PHP 中。
所以当你使用 FPM补丁编译
PHP 并且选定了 enalbe-fpm 选项的时候,nginx 会根据需要控制
PHP 进程的启动和停止。
这样就省去了以前繁琐的配置步骤了。
当然,对于喜欢省事儿的网站开发人员来说手动配置补丁和编译
PHP 代码还是有点繁琐。
现在我要告诉大家此新闻给我们带来的惊喜:
PHP5.4 将会把 FPM 补丁直接包含到
PHP 工程的内核里面! 这意味着你只需要下载
PHP 就能编译了。
你不再需要设置 enalbe-fpm不再需要考虑如何与 nginx 同步的问题,还有努力采取与 Apache 相同设置的问题。
也许你曾经尝试过在 nginx 平台上运行
PHP,而且对其繁破口大骂过。
我要向你郑重建议去试一下
PHP-FPM。
虽然它现在仍然存在一点问题,但是它时时刻刻在进步的。
在此期间,也许你能体会到同在街头玩耍的小孩子突然得到一个超酷的玩具一般的惊喜。
上一篇:
Web页面安全验证类函数代码
下一篇:
基于web二手汽车交易管理系统(含录像)