可爱熊个人博客

Archive for 七月, 2010

PHP缓存MEMCACHE 应用详解-完整版

Memcache函数库是在PECL(PHP Extension Community Library)中,主要作用是搭建大容量的内存数据的临时存放区域,在分布式的时候作用体现的非常明显,否则不建议使用。在ubuntu上安装完运行的时候报错:

/usr/local/memcached/bin/memcached: error while loading shared libraries: libevent-1.4.so.2:

cannot open shared object file: No such file or Directory
按照:《libeven、memcached、libmemcache安装》中的方法,使用:
sudo ln -s /usr/local/lib/libevent-1.4.so.2 /usr/lib/libevent-1.4.so.2

可以修正这个BUG
通过新得立安装php的memcached模块,注销/etc/php5/conf.d/memcached.ini里面的“;”,重启apache,调用phpinfo()出现memcached的信息。 Read More…

Tags: ,

php 处理二维数组(去除重复项,排序,转换,去空白等)

1. PHP二维数组去重复项函数

PHP数组去除重复项 有个内置函数array_unique (),但是php的 array_unique函数只适用于一维数组,对多维数组并不适用,以下提供一个二维数组 的 array_unique函数

Php代码 复制代码
  • //二维数组去掉重复值   
  • function unique_arr($array2D){   
  •     foreach ($array2D as $v){   
  •          $v = join(“,”,$v);  //降维,也可以用implode,将一维数组转换为用逗号连接的字符串   
  •          $temp[] = $v;   
  •      }   
  •      $temp = array_unique($temp);    //去掉重复的字符串,也就是重复的一维数组   
  •     foreach ($temp as $k => $v){   
  •         $temp[$k] = explode(“,”,$v);   //再将拆开的数组重新组装   
  •     }   
  •     return $temp;   
  • }  
  • //二维数组去掉重复值
    function unique_arr($array2D){
    	foreach ($array2D as $v){
             $v = join(",",$v);  //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
             $temp[] = $v;
         }
         $temp = array_unique($temp);    //去掉重复的字符串,也就是重复的一维数组
        foreach ($temp as $k => $v){
            $temp[$k] = explode(",",$v);   //再将拆开的数组重新组装
        }
        return $temp;
    }

      Read More…

    Tags:

    PHP:IP转换整形(ip2long)

    如何将四个字段以点分开的IP网络址协议地址转换成整数呢?PHP里有这么一个函数ip2long.比如 
    <?php 
    echo ip2long(“10.2.1.3”); 
    ?> 
    我们将得到 
    167903491 

    这是如何计算的,目前我知道有两个算法。其一 
    <?php 
    function ip2int($ip){ 
       //我们先把ip分为四段,$ip1,$ip2,$ip3,$ip4 
       list($ip1,$ip2,$ip3,$ip4)=explode(“.”,$ip); 
       //然后第一段乘以256的三次方,第二段乘以256的平方,第三段乘以256 
       //这即是我们得到的值 
       return $ip1*pow(256,3)+$ip2*pow(256,2)+$ip3*256+$ip4; 

    ?> 

    其二,用位运算 
    <?php 
    function ip2int($ip){ 
       list($ip1,$ip2,$ip3,$ip4)=explode(“.”,$ip); 
       return ($ip1<<24)|($ip2<<16)|($ip3<<8)|($ip4); 

    ?> 

    我们会发现,有些ip转化成整数后,是负的,这是因为得到的结果是有符号整型,最大值是2147483647.要把它转化为无符号的,可以用 
    sprintf(“%u”,ip2long($ip); 

    就能转换为正整数。而且得到的结果用long2ip也可以正常转换回原来的ip地址。也可以用ip2long来验证一个ip是否是有效的,如 
    <?php 
    function chk_ip($ip){ 
       if(ip2long($ip)==”-1″) { 
          return false; 
       } 
       return true; 

    //应用 
    var_export(chk_ip(“10.111.149.42”)); 
    var_export(chk_ip(“10.111.256.42”)); 
    ?> 
    将输出true和false

    Tags:

    linux下Memcache的安装和PHP中的配置详解

    在网上看了很多linux下Memcache的安装五花八门,让我重装了四五次。最终还是装好了。
    我把装的过程和容易出错的地方给大家列出来了。希望没有装过的朋友能看到我的文章,
    一次搞定linux下的memcache.

    linux下的Memcache安装:

    1、安装libevent:

    下载地址:http://monkey.org/~provos/libevent/

    安装位置:/usr/local/libevent (根据自己喜好而定,建议外部程序库都装到/usr/local对应的目录下)

    安装过程:

    #下载解压 Read More...

    Tags:

    Memcache Win32 的安装与PHP中的配置和Memcache用法实例

    Memcache 相关介绍http://edu.codepub.com/2009/0614/6129.php
    memcache是一个高性能的分布式的内存对象缓存系统,它能够用来存储各种
    格式的数据,包括图像、视频、文件以及数据库检索的结果等
    使用Memcache的网站一般流量都是比较大的,为了缓解数据库的压力,
    让Memcache作为一个缓存区域,把部分信息保存在内存中,在前端能
    够迅速的进行存取。

    1.下载:Memcache Win32
    http://www.php100.com/html/download/server/2010/0125/3857.html
    或到官方:www.jehiah.cz/projects/memcached-win32/ Read More…

    Tags:

    memcache实现计数器和数据压缩

    一:访问统计

    //访问统计
    $memcache = new Memcache;
    $memcache->connect(‘localhost’, 11211) or die (“Could not connect”);
    if($s=$memcache->get(‘a’)) {
       $s=$s+1;
       $memcache->set(‘a’,$s);
    }
    else
    $memcache->set(‘a’,1);
    echo ‘访问结果为:’.$s;
    ?>

    其实我们可以用increment方法代替上面的做法  Read More…

    Tags:

    memcached完全剖析–1. memcached的基础

    memcached是什么?

    memcached 是以LiveJournal 旗下Danga Interactive 公司的Brad Fitzpatric 为首开发的一款软件。现在已成为 mixihatenaFacebookVox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。

    许多Web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、网站显示延迟等重大影响。

    这时就该memcached大显身手了。memcached是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。 Read More…

    Tags:

    smarty调用php的函数

    相信很多人都不是很很了解smarty的一个重要功能,就是能在smarty模板里面调用php的内置函数.

    模板书写:
    {‘param1’|functionName:’param2′:’param3’}

    php函数原型:
    echo functionName(‘param1′,’param2′,’param3’);

    实例:
    {‘1234567’|substr:’1′:’2’}
    下面这个比较怪 和函数的参数顺序有关系
    {‘a’|str_replace:’A’:’abcd’}

    Tags: ,

    substr(),mb_substr()及mb_strcut的区别和用法

    substr()函数可以 分割文字,但要分割的文字如果包括中文字符往往会遇到问题,这时可以用mb_substr()/mb_strcut这个函数,mb_substr() /mb_strcut的用法与substr()相似,只是在mb_substr()/mb_strcut最后要加入多一个参数,以设定字符串的编码,但是 一般的服务器都没打开php_mbstring.dll,需要在php.ini在把php_mbstring.dll打开。

    举个例子:
    <?php
    echo mb_substr(‘这样一来我的字符串就不会有乱码^_^’, 0, 7, ‘utf-8’);
    ?>
    输出:这样一来我的字
    <?php
    echo mb_strcut(‘这样一来我的字符串就不会有乱码^_^’, 0, 7, ‘utf-8’);
    ?>

    Read More…

    Tags: , ,