- 浏览: 2538878 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (676)
- linux运维 (157)
- php (65)
- mysql (78)
- nginx (27)
- apche (18)
- framework (6)
- windows (9)
- IDE工具 (23)
- struts2 (7)
- java (13)
- 移动互联网 (14)
- memcache redis (23)
- shell基础/命令/语法 (37)
- shell (50)
- puppet (4)
- C (11)
- python (9)
- 产品经理 (27)
- Sphinx (4)
- svn (12)
- 设计构建 (12)
- 项目管理 (44)
- SEO (1)
- 网站架构 (26)
- 审时度势 (42)
- 网络 (14)
- 激发事业[书&视频] (81)
- 其它 (12)
- 摄影 (8)
- android (21)
最新评论
-
zhongmin2012:
原文的书在哪里
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
renzhengzhi:
你好,请问个问题,从master同步数据到slave的时候,s ...
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
ibc789:
你好,看了你的文章,我想请教个问题, 我在用 redis的时候 ...
redis 的两种持久化方式及原理 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器
http://www.toplee.com/blog/100.html 参考网站
----------------------安装phpredis
https://github.com/nicolasff/phpredis/downloads
cd /tmp
tar zxvf nicolasff-phpredis-2.2.1-66-g89bdaf2.tar.gz
cd nicolasff-phpredis-89bdaf2/
/usr/local/php/bin/phpize
/configure --with-php-config=/usr/local/php/bin/php-config
make
make install
ll /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/
cat /usr/local/php/etc/php.ini | grep redis
kill -USR2 `cat /dev/shm/pid/php-fpm.pid`
/usr/local/php/sbin/php-fpm -t
----------------安装配置
获得eaccelerator源代码eaccelerator-0.9.6-rc1.tar.bz2:
http://bart.eaccelerator.net/source/
需要用到phpize,所以:
#yum -y install php-devel
#whereis phpize
phpize: /usr/bin/phpize /usr/share/man/man1/phpize.1.gz
#tar jxvf eaccelerator-0.9.6-rc1.tar.bz2
#cd eaccelerator-0.9.6-rc1
#/usr/bin/phpize
#./configure --enable-eaccelerator=shared --with-php-config=/usr/bin/php-config
#make
#make install
Installing shared extensions: /usr/lib/php/modules/
注意上面的“Installing shared extensions”的地址,这是phpize告诉我们的扩展库的地址。
#ls -l /usr/lib/php/modules/ 就可看到eaccelerator.so
#cd /etc/php.d
#vim eaccelerator.ini
extension="eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator" 需要手动建立目录和权限
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="1"
eaccelerator.log_file = "/var/log/httpd/eaccelerator_log"
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"
重启apache
查看phpinfo
----------------------------测试
如果你打开了eAccelerator的debug选项,可以从日志中看到类似下面的信息:
[root@localhost httpd]# tail -f eaccelerator_log
EACCELERATOR hit: "/var/www/html/test/index.php"
EACCELERATOR hit: "/var/www/html/test/index.php"
EACCELERATOR hit: "/var/www/html/phpinfo.php"
以上信息表示文件都得到了缓存和命中。
-----------------------------eAccelerator提供如下的API接口和文件
:(下述文件均在源码包的doc/php/目录下)
cd /tmp/eaccelerator-0.9.6-rc1/doc/php
[root@localhost php]# ls
cache.php dasm.php examples info.php shared_memory.php
有关上述文档详细说明请参考官方文档:API Documents:http://bart.eaccelerator.net/doc/phpdoc/
下面有部分网友翻译后的接口说明:
eaccelerator_put($key, $value, $ttl=0)
将 $value 以 $key 为键名存进缓存(php4下支持对像类型,看源码好像zend2里不支持了),$ttl 是这个缓存的生命周期,单位是秒,省略该参数或指定为 0 表示不限时,直到服务器重启清空为止。
eaccelerator_get($key)
根据 $key 从缓存中返回相应的 eaccelerator_put() 存进去的数据,如果这项缓存已经过期或不存在那么返回值是 NULL
eaccelerator_rm($key)
根据 $key 移除缓存
eaccelerator_gc()
移除清理所有已过期的 key
eaccelerator_lock($key)
为 $key 加上锁定操作,以保证多进程多线程操作时数据的同步。需要调用 eaccelerator_unlock($key) 来释放这个锁或等待程序请求结束时自动释放这个锁。
例如:
<?php
eaccelerator_lock("count");
eaccelerator_put("count",eaccelerator_get("count")+1));
?>
eaccelerator_unlock($key)
根据 $key 释放锁
eaccelerator_cache_output($key, $eval_code, $ttl=0)
将 $eval_code 代码的输出缓存 $ttl 秒,($ttl参数同 eacclerator_put)
例如:
<?php eaccelerator_cache_output('test', 'echo time(); phpinfo();', 30); ?>
eaccelerator_cache_result($key, $eval_code, $ttl=0)
将 $eval_code 代码的执行结果缓存 $ttl 秒,($ttl参数同 eacclerator_put),类似 cache_output
例如:
<?php eaccelerator_cache_result('test', ' time() . "Hello";', 30); ?>
eaccelerator_cache_page($key, $ttl=0)
将当前整页缓存 $ttl 秒。
例如:
<?php
eaccelerator_cache_page($_SERVER['PHP_SELF'].'?GET='.serialize($_GET),30);
echo time();
phpinfo();
?>
eaccelerator_rm_page($key)
删除由 eaccelerator_cache_page() 执行的缓存,参数也是 $key
-----------------------------PHP代码中使用eAccelerator加速
下面有一个测试的代码,你可以测试一下eAccelerator强大的威力:(该代码在 cli 模式下可能无效)
<?php
class test_cache {
var $pro = 'hello';
function test_cache() {
echo "Object Created!<br>\n";
}
function func() {
echo ', the world!';
}
function now($t) {
echo date('Y-m-d H:i:s', $t);
}
}
$tt = eaccelerator_get("test_tt");
if (!$tt)
{
$tt = new test_cache;
eaccelerator_put("test_tt", $tt);
echo "no cached!<br>\n";
}
else {
echo "cached<br>\n";
}
echo $tt->pro;
$tt->func();
$tt->now(time() + 86400);
?>
另外,据说在著名的vBulletin 3.60Beta版里面已经集成了对eAccelerator的支持,下面是一段来自vBulletin里面的代码
// #############################################################################
// eAccelerator
/**
* Class for fetching and initializing the vBulletin datastore from eAccelerator
*
* @package vBulletin
* @version $Revision: 0.1 $
* @date $Date: 2005/06/12 13:14:18 $
*/
class vB_Datastore_eAccelerator extends vB_Datastore
{
/**
* Fetches the contents of the datastore from eAccelerator
*
* @param array Array of items to fetch from the datastore
*
* @return void
*/
function fetch($itemarray)
{
if (!function_exists('eaccelerator_get'))
{
trigger_error("eAccelerator not installed", E_USER_ERROR);
}
foreach ($this->defaultitems AS $item)
{
$this->do_fetch($item);
}
if (is_array($itemarray))
{
foreach ($itemarray AS $item)
{
$this->do_fetch($item);
}
}
$this->check_options();
// set the version number variable
$this->registry->versionnumber =& $this->registry->options['templateversion'];
}
/**
* Fetches the data from shared memory and detects errors
*
* @param string title of the datastore item
*
* @return void
*/
function do_fetch($title)
{
$data = eaccelerator_get($title);
if ($data === null)
{ // appears its not there, lets grab the data, lock the shared memory and put it in
$data = '';
$dataitem = $this->dbobject->query_first("
SELECT title, data FROM " . TABLE_PREFIX . "datastore
WHERE title = '" . $this->dbobject->escape_string($title) ."'
");
if (!empty($dataitem['title']))
{
$data =& $dataitem['data'];
$this->build($dataitem['title'], $dataitem['data']);
}
}
$this->register($title, $data);
}
/**
* Updates the appropriate cache file
*
* @param string title of the datastore item
*
* @return void
*/
function build($title, $data)
{
if (!function_exists('eaccelerator_put'))
{
trigger_error("eAccelerator not installed", E_USER_ERROR);
}
eaccelerator_lock($title);
eaccelerator_put($title, $data);
eaccelerator_unlock($title);
}
}
发表评论
-
wamp 升级php apache mysql
2014-02-18 14:30 1188wamp对于日常开发来说会增添非常大的方便 但是对于集成 ... -
[被震撼到了]我的2009年自我反省【也名10问PHP程序员】php程序员进阶篇
2012-10-29 11:22 10061.首先看了PHP的源码API函数 ,对于许多口水仗的争论一 ... -
五种常见的PHP设计模式
2012-08-15 13:37 1097原文地址:http://www.ibm.com/develop ... -
PHP的Realpath Cache
2012-07-03 09:53 3756PHP的缓存有很多种,包括输出缓冲(ob系列函数),opcod ... -
nginx+php-fmp 内存不释放
2012-06-20 11:01 5232由于服务器只有600M的内 ... -
[转]探究php底层运行机制
2012-04-17 14:36 2095http://www.myext.cn/Article/921 ... -
APC 缓存
2012-04-16 16:22 6111APC主要有两个作用,一是将php的编译缓存保存在共享内存中, ... -
【汇总】PHP-FPM 配置优化
2012-02-25 11:41 17345http://www.linuxidc.com/Linux/2 ... -
【推荐转载】谁贪占了我的系统资源 php-fpm
2012-02-16 14:12 1368测试人员向我们反映:在Facebook平台的游戏比其它平台 ... -
php代码性能分析工具:XHProf
2012-01-30 15:11 4887http://www.ooso.net/archives/52 ... -
神奇的Fastcgi_Finish_Request
2012-01-17 10:52 1252当PHP运行在FastCGI模式时,PHP FPM提供了一个名 ... -
PHP Warning: Xdebug MUST be loaded as a Zend extension in Unknown on line 0 解决办法
2011-11-07 17:18 3390;extension=php_xdebug.dll z ... -
【转】php 程序员
2011-11-05 12:01 947http://www.blags.org/php-pro ... -
cookies之PHPSESSID
2011-10-24 21:52 2950// 设置str function get_cooki ... -
并发同步
2011-10-11 14:26 1450============================= ... -
PHP核心编译配置选项列表
2011-09-15 11:21 1227PHP 的编译配置详细选项 ... -
Hudson_CI:PHP持续集成
2011-09-09 16:29 3095一、持续集成的概念 概念网上很多了,这里就不再详细说了。 ... -
try{}catch{}
2011-07-22 15:13 1217<?php /* 检测(try)、抛出(th ... -
PHP内存溢出Allowed memory size of 解决办法
2011-07-01 12:57 20595============================All ... -
?php消息队列
2011-06-22 09:45 2425php-通过共享内存实现消息队列和进程通信的两个类 h ...
相关推荐
使用 make 命令来编译扩展模块,并使用 make install 命令来安装扩展模块。 在编译扩展模块时,可能会遇到一些错误,例如 iconv 依赖项的错误。在这种情况下,可以使用 ZEND_EXTRA_LIBS 变量来指定 iconv 依赖项的...
【PHP缓存加速器eAccelerator配置详解】 一、eAccelerator介绍 1、背景 eAccelerator是一款免费且开源的PHP加速器,它旨在提升PHP脚本的执行效率,通过缓存编译后的PHP代码,减少服务器负载。eAccelerator的出现...
本篇文章将详细介绍如何安装和配置Suhosin扩展,特别关注从GitHub的主分支获取并安装suhosin-master。 首先,理解Suhosin的作用至关重要。Suhosin分为两部分:一个PHP内核模块和一个PHP脚本过滤器。内核模块在PHP...
编译安装扩展库,执行 `phpize`、`./configure`、`make` 和 `make install` 命令。重新配置 PHP,编辑 `php.ini` 文件,添加扩展库的配置信息。重启 web 服务器,并检查扩展库的安装结果。 第二部分:PHP 扩展库...
4. 安装oci8扩展:使用`make`和`make install`命令编译并安装oci8扩展。这将把oci8.so动态链接库文件安装到PHP的扩展目录。 5. 更新PHP配置:在PHP的配置文件(通常是`php.ini`)中添加以下行: ``` extension=...
本案例聚焦于“CentOS PHP5.6环境下安装mongo.so扩展”,这是一个用于连接和操作MongoDB数据库的PHP扩展。MongoDB是一个高性能、无模式的分布式文档型数据库,而mongo.so是PHP与MongoDB进行交互的接口。 首先,我们...
1. **检查PHP版本和已安装扩展** 在开始安装之前,我们需要确认当前PHP的版本以及已安装的扩展。打开终端,输入以下命令: ``` php -v ``` 这将显示PHP的版本信息和已安装的扩展。如果cURL不在列表中,那么我们...
* 安装扩展:`make install` 3. 开启 Redis 扩展 安装完成后,需要在 PHP 配置文件中开启 Redis 扩展。在 php.ini 文件中添加以下配置: `extension=redis.so` 然后,需要重启 PHP-FPM 进程以使扩展生效。 4. ...
接着,添加curl扩展模块引用: ``` extension = curl.so ``` 这里,你可以选择不指定`extension_dir`,只需将`curl.so`复制到PHP默认的扩展目录`/usr/local/php5/lib/php/extensions/`,并在`php.ini`中添加`...
本文主要介绍不随同PHP编译,而是通过生成单独的`.so`文件来安装扩展的方法,这种方法虽然执行效率可能略低,但能实现模块化的扩展管理,使得在不改变PHP原有安装的基础上,通过修改`php.ini`文件连接单独生成的`.so...
在Linux和FreeBSD操作系统上,使用C语言开发PHP的.so扩展模块是一项常见的任务,这主要涉及到PHP的内部机制以及C语言编程。这篇文章将深入解析这一过程,并提供一个实际的示例来帮助理解。 首先,我们需要了解PHP...
在本文中,我们将学习如何在 Ubuntu 环境下安装 Redis 数据库和 Redis-PHP 扩展,以便在 PHP 项目中使用 Redis。 安装 Redis 1. 首先,需要下载 Redis 软件包,使用以下命令下载最新版本的 Redis: ``` sudo wget ...
通常,您可以使用包管理器(如`apt-get`或`yum`)来安装这些依赖。 3. **解压并编译扩展**: 解压缩下载的Redis扩展文件,进入解压后的目录。运行以下命令进行编译和安装: ``` phpize ./configure make sudo...
`phpize`是PHP提供的一个脚本,用于准备构建和安装PHP扩展。要使用`phpize`,首先需要确保你有一个与当前PHP版本完全匹配的源码包。例如,如果你的PHP版本是5.2.6,那么你需要下载对应的`php-5.2.6.tar.gz`源码包。 ...
按照提示,你需要执行以下步骤来编译并安装扩展: 1. `cd ..`:返回到`ext`目录。 2. `vi ext/jinzhesheng_module/config.m4`:编辑配置文件,根据需求进行调整。 3. `./buildconf`:重新构建配置文件。 4. `./...
本文将详细介绍如何在PHP环境中安装和配置Redis扩展模块。 首先,你需要确保你的系统中已经安装了PHP和Redis。对于PHP,你可以通过包管理器(如Ubuntu的`apt-get`或CentOS的`yum`)来安装。对于Redis,通常需要下载...
3. 编译并安装扩展:运行`phpize`来配置编译环境,然后执行`./configure --with-sphinx=/path/to/sphinx`,最后使用`make && make install`完成编译和安装。 4. 更新PHP配置:将新安装的Sphinx扩展添加到php.ini文件...
接着,需要编译和安装 PHP 扩展 Redis,使用命令 `/usr/local/php/bin/phpize` 和 `./configure --with-php-config=/usr/local/php/bin/php-config`。最后,需要安装 PHP 扩展 Redis,使用命令 `make && make ...