当前位置:  编程技术>php
本页文章导读:
    ▪php转换xml为数组的代码分享      以下代码,实现将xml转换为数组的功能。 例子: <?php /** * 转换xml为数组 * edit by www. */ class xml { private $parser; private $tag_cur=0; private $data=array(); private $struct=array(); .........
    ▪php中memcache缓存类的代码分享      代码1,操作memcache服务器。 <?php class mem{ private static $conn; public function mem($host='127.0.0.1',$port=11211) { $conn = new Memcache; $conn->pconnect($host, $port); } .........
    ▪php判断用户是否掉线及关闭网页的方法分享      要实现判断用户已掉线并关闭网页,主要用到方法connection_status 和 connection_aborted。 通过一个例子,来了解下它们的用法: <? echo str_repeat(" ",300); //以下不可省略,否则用户断线,php(线程).........

[1]php转换xml为数组的代码分享
    来源: 互联网  发布时间: 2013-12-24

以下代码,实现将xml转换为数组的功能。
例子:

<?php
/**
* 转换xml为数组
* edit by www.
*/
class xml {  
    private $parser;  
    private $tag_cur=0;  
    private $data=array();  
    private $struct=array();  
    function xml() {  
        $this->parser = xml_parser_create();  
        xml_set_object($this->parser,&$this);  
        xml_set_element_handler($this->parser,"tag_open","tag_close");  
        xml_set_character_data_handler($this->parser,"cdata");  
    }  
    function parse($data) {  
        $this->data=array();  
        $this->struct=array();  
        $this->tag_cur=0;  
        xml_parse($this->parser,$data);  
        return $this->data;  
    }  
    function tag_open($parser,$tag,$attributes) {  
        $this->struct[]=$tag;  
        $this->tag_cur++;  
    }  
    function cdata($parser,$cdata) {  
        $tmp=&$this->data;  
        for($i=0;$i<$this->tag_cur;$i++)  
        {  
            if(!isset($tmp[$this->struct[$i]]))  
            {  
                $tmp[$this->struct[$i]]=array();  
            }  
            $tmp=&$tmp[$this->struct[$i]];  
        }  
        if(!empty($tmp))  
        {  
            $tmp1=$tmp;  
            if(is_array($tmp1))  
            {  
                $tmp=array_merge($tmp1,array($cdata));  
            }else{  
                $tmp=array($tmp1,$cdata);  
            }  
        }else $tmp=$cdata;  
    }  
    function tag_close($parser,$tag) {  
        array_pop($this->struct);  
        $this->tag_cur--;  
    }  
}  
  
$xml=new xml();  
echo "<pre>";  
print_r($xml->parse('<a><a1><b1>b1</b1><b2>b2</b2><b3><c1><d1>d1</d1>
<d1>d1_2</d1><d1>d1_3</d1></c1></b3></a1><e1>1</e1></a>'));  
echo "</pre>";
?>

说明:
也可以使用 simplexml_load_string函数轻松搞定。


    
[2]php中memcache缓存类的代码分享
    来源: 互联网  发布时间: 2013-12-24

代码1,操作memcache服务器。

<?php   
class mem{  
    private static $conn;  
    public function mem($host='127.0.0.1',$port=11211)  
    {  
        $conn = new Memcache;  
        $conn->pconnect($host, $port);  
    }  
      
    public function get($key)  
    {  
        return $this->conn->get($key);  
    }  
      
    public function set($key,$value,$expire=259200)  
    {  
        return $this->conn->set($key,$value,0,$expire);  
    }  
      
    public function del($key)  
    {  
        return $this->conn->delete($key);  
    }  
      
    public function clearAll()  
    {  
        return $this->conn->flush();  
    }  
}  
?>

代码2,从数据库取数据,如果取不到,则自动加载设定的表到内存,假设,每个表的主键字段是id。

<?php
//memcache缓存类
//by www.   
require_once('mem.php');  
require_once('common.fun.php');  
class cache{  
    private static $mem;  
    private static $fixedTables=array(  
                                    "enemy",  
                                    "equip",  
                                    "soldier_skill"  
                                    );  
      
    private static $fixedTablesHasCol2Search=array(  
                                    "soldier"=>array("soldier_id")                                     
                                    );  
      
    private $db;  
    public function cache($host='127.0.0.1',$port=11211,&$db)  
    {  
        self::$mem = new mem($host,$port);  
        $this->db=$db;  
    }  
      
    public function get($tb,$pkv)  
    {  
        $return = self::$mem->get($tb.'_'.$pkv);  
        if(!$return)  
        {  
            $this->loadAll();  
            $return = self::$mem->get($tb.'_'.$pkv);  
        }  
        if(!$return) common::dolog('cache class get "'.$tb.'_'.$pkv.'" failed');  
        return $return;  
    }  
      
    public function getByCol($tb,$col,$kv)  
    {  
        $return = self::$mem->get($tb.'_'.$col.'_'.$kv);  
        if(!$return)  
        {  
            $this->loadAll();  
            $return = self::$mem->get($tb.'_'.$col.'_'.$kv);  
        }  
        if(!$return) common::dolog('cache class getByCol "'.$tb.'_'.$col.'_'.$kv.'" failed');  
        return $return;  
    }  
      
    public function loadAll()  
    {  
        foreach(self::$fixedTables as $tb)  
        {  
            $rows=$this->db->getRows('select '.chr(42).' from '.$tb);  
            $seachCol=array();  
            $searhColData=array();  
            if(isset(self::$fixedTablesHasCol2Search[$tb]))  
            {  
                $seachCol=self::$fixedTablesHasCol2Search[$tb];  
            }  
            foreach($rows as $row)  
            {  
                self::$mem->set($tb.'_'.$row['id'],$row);  
                if(!empty($seachCol))  
                {  
                    foreach($seachCol as $col)  
                    {  
                        $searhColData[$tb.'_'.$col.'_'.$row[$col]][]=$row;  
                    }  
                }  
            }  
            foreach($searhColData as $k=>$v)       
            {  
                self::$mem->set($k,$v);  
            }  
        }  
    }  
      
    public function set($key,$value,$expire=259200)  
    {  
        return self::$mem->set($key,$value,0,$expire);  
    }  
      
    public function del($key)  
    {  
        return self::$mem->del($key);  
    }  
}  
?>

    
[3]php判断用户是否掉线及关闭网页的方法分享
    来源: 互联网  发布时间: 2013-12-24

要实现判断用户已掉线并关闭网页,主要用到方法connection_status 和 connection_aborted。

通过一个例子,来了解下它们的用法:

<?
echo str_repeat(" ",300);
//以下不可省略,否则用户断线,php(线程)立即终止,不会执行" if  connection_status()!=0||connection_aborted){"
ignore_user_abort(true); 
while (true) {
   echo "test<br>/n;//必须有输出, 否则线程会一直执行下去,直到重新启动apche(测试过程2小时),输出也可以写到//注释2处
   flush();
   if (connection_status()!=0||connection_aborted()){
     //用户退出了
   }
   //注释2
   sleep(2);
//by www.
}
?>

下面是另一个例子:

<?
//检测是否掉线,然后关闭网页
//编辑:www.
echo str_repeat(" ",300);
ignore_user_abort(true); //without this, current apache thread will terminate Immediately,so
 the code "if (connection_status()!=0){" will not be executed as the script was broken off!
while (true) {
         echo "test<br>/n";//if there's no any output, this script will execute endless,
 which means the current apache thread will not end until you restart apache and connection_status()will 
keep 0 and connection_aborted() will keep false.
         flush();
         sleep(2);
         if (connection_status()!=0){
                 include ('dbconnect.inc');
                 $sql="delete from online_users where online_user=$user";
                 $sql_exec=pg_exec($vChatDB, $sql);
                 die(); //kills the script
         }
}
?>

    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3