当前位置:  编程技术>php
本页文章导读:
    ▪PHP获取MAC地址的实现代码      本节分享的php代码,主要功能: 获取机器网卡的物理(MAC)地址。 代码:   代码示例: <?php  /**   * 获取机器网卡的物理(MAC)地址 * 目前支持WIN/LINUX系统   * 编辑: www. **/  class M.........
    ▪实例详解php类中public,private,protected的区别      一,public,private,protected的区别 public:权限是最大的,可以内部调用,实例调用等。 protected: 受保护类型,用于本类和继承类调用。 private: 私有类型,只有在本类中使用。 二,实例 例1,   .........
    ▪php使用memcache实现多服务器共享session      基于文件的Session存取瓶颈都是在磁盘IO操作上,对付小数据量的Session没有问题。 碰到大数据量的Sesstion,最好还是利用Memcache或redis来保存Session数据,直接通过内存的方式,效率会高很多。 .........

[1]PHP获取MAC地址的实现代码
    来源: 互联网  发布时间: 2013-12-24

本节分享的php代码,主要功能:
获取机器网卡的物理(MAC)地址。

代码:
 

代码示例:

<?php 
/**  
* 获取机器网卡的物理(MAC)地址
* 目前支持WIN/LINUX系统  
* 编辑: www.
**/ 
class MacAddInfo {     
    var $return_array = array (); // 返回带有MAC地址的字串数组   
    var $mac_addr; 
     
    function MacAddInfo($os_type) { 
        switch (strtolower() ( $os_type )) { 
            case "linux" : 
                $this->forLinux (); 
                break; 
            case "solaris" : 
                break; 
            case "unix" : 
                break; 
            case "aix" : 
                break; 
            default : 
                $this->forWindows (); 
                break;         
        } 

        $temp_array = array (); 
        foreach ( $this->return_array as $value ) { 
             
            if (preg_match ( "/[0-9a-f][0-9a-f][:-]" . "[0-9a-f][0-9a-f][:-]" . "[0-9a-f][0-9a-f][:-]" . "[0-9a-f][0-9a-f][:-]" . "[0-9a-f][0-9a-f][:-]" . "[0-9a-f][0-9a-f]/i", $value, $temp_array )) { 
                $this->mac_addr = $temp_array [0]; 
                break; 
            }
        } 
        unset ( $temp_array ); 
        return $this->mac_addr; 
    } 
     
    function forWindows() { 
        @exec ( "ipconfig /all", $this->return_array ); 
        if ($this->return_array) 
            return $this->return_array; 
        else { 
            $ipconfig = $_SERVER ["WINDIR"] . "\system32\ipconfig.exe"; 
            if (is_file ( $ipconfig )) 
                @exec ( $ipconfig . " /all", $this->return_array ); 
            else 
                @exec ( $_SERVER ["WINDIR"] . "\system\ipconfig.exe /all", $this->return_array ); 
            return $this->return_array; 
        } 
    } 
     
    function forLinux() { 
        @exec ( "ifconfig -a", $this->return_array ); 
        return $this->return_array; 
    } 

//调用示例
//$mac = new MacAddInfo(PHP_OS);   
//echo $mac->mac_addr;   
?> 

您可能感兴趣的文章:
php获取电脑MAC地址的代码举例
php取客户端MAC地址的代码
php获取计算机唯一标识信息(cpu,网卡,MAC地址)
什么是MAC地址-基础知识
php获取网卡MAC地址与URL中主域


    
[2]实例详解php类中public,private,protected的区别
    来源: 互联网  发布时间: 2013-12-24

一,public,private,protected的区别
public:权限是最大的,可以内部调用,实例调用等。
protected: 受保护类型,用于本类和继承类调用。
private: 私有类型,只有在本类中使用。

二,实例

例1,
 

代码示例:
<?php 
error_reporting(E_ALL); 
 
class test{ 
 public $public; 
 private $private; 
 protected $protected; 
 static $instance; 
 public  function __construct(){ 
 $this->public    = 'public     <br>'; 
 $this->private   = 'private    <br>'; 
 $this->protected = 'protected  <br>'; 
 } 
 static function tank(){ 
 if (!isset()(self::$instance[get_class()])) 
 { 
 $c = get_class(); 
 self::$instance = new $c; 
 } 
 
 return self::$instance; 
 }     
 
 public function pub_function() { 
 echo "you request public function<br>"; 
 echo $this->public; 
 echo $this->private;        //private,内部可以调用 
 echo $this->protected;      //protected,内部可以调用 
 $this->pri_function();      //private方法,内部可以调用 
 $this->pro_function();      //protected方法,内部可以调用 
 } 
 protected  function pro_function(){ 
 echo "you request protected function<br>"; 
 } 
 private function pri_function(){ 
 echo "you request private function<br>"; 
 } 

 
$test = test::tank(); 
echo $test->public; 
echo $test->private;    //Fatal error: Cannot access private property test::$private 
echo $test->protected;  //Fatal error: Cannot access protected property test::$protected 
$test->pub_function(); 
$test->pro_function();  //Fatal error: Call to protected method test::pro_function() from context 
$test->pri_function();  //Fatal error: Call to private method test::pri_function() from context
?>

代码说明:
public:    可以class内部调用,可以实例化调用。
private:   可以class内部调用,实例化调用报错。
protected:  可以class内部调用,实例化调用报错。

编辑推荐:
php类的private属性继承问题详解
php类中private访问控制的疑问

例2,
 

代码示例:
<?php 
class test{ 
 public $public; 
 private $private; 
 protected $protected; 
 static $instance; 
 
 public  function __construct(){ 
 $this->public    = 'public     <br>'; 
 $this->private   = 'private    <br>'; 
 $this->protected = 'protected  <br>'; 
 } 
 protected function tank(){                          //私有方法不能继承,换成public,protected 
 if (!isset(self::$instance[get_class()])) 
 { 
 $c = get_class(); 
 self::$instance = new $c; 
 } 
 return self::$instance; 
 }     
 
 public function pub_function() { 
 echo "you request public function<br>"; 
 echo $this->public; 
 } 
 protected  function pro_function(){ 
 echo "you request protected function<br>"; 
 echo $this->protected; 
 } 
 private function pri_function(){ 
 echo "you request private function<br>"; 
 echo $this->private; 
 } 

 
class test1 extends test{ 
 
 public function __construct(){ 
 parent::tank(); 
 parent::__construct(); 
 } 
 public function tank(){ 
 echo $this->public; 
 echo $this->private;       //Notice: Undefined property: test1::$private 
 echo $this->protected; 
 $this->pub_function(); 
 $this->pro_function(); 
 $this->pri_function();    //Fatal error: Call to private method test::pri_function() from context 'test1' 
 } 
 
 public  function pro_extends_function(){ 
 echo "you request extends_protected function<br>"; 
 } 
 public function pri_extends_function(){ 
 echo "you request extends_private function<br>"; 
 } 

 
error_reporting(E_ALL); 
$test = new test1(); 
$test -> tank(); //子类和父类有相同名字的属性和方法,实例化子类时,子类的中的属性和方法会盖掉父类的。 
 
?>

代码说明:
public:    test中的public可以被继承。
private:   test中的private不可以被继承。
protected:test中的protected可以被继承。
static:   test中的static可以被继承。


    
[3]php使用memcache实现多服务器共享session
    来源: 互联网  发布时间: 2013-12-24

基于文件的Session存取瓶颈都是在磁盘IO操作上,对付小数据量的Session没有问题。
碰到大数据量的Sesstion,最好还是利用Memcache或redis来保存Session数据,直接通过内存的方式,效率会高很多。

首先,打开php.ini文件,找到session的部分:(分号后面为注释)
 

代码示例:
[Session]
; Handler used to store/retrieve data.
session.save_handler = files ; 这个是session的方式,默认的files即可,表示用文件储存。

还有两种方式,user和memcache。
user方式指的是自己(也就是用户)定义session的句柄,用于session的存取等,这个可以把session扩展存到数据库里。
memcache方式,需要配置好memcache,还要配置session.save_path。

使用memcache来作PHP 的session.save_handler:
 

代码示例:
ini_set("session.save_handler", "memcache"); 
ini_set("session.save_path", "tcp://127.0.0.1:11211,tcp://192.168.1.12:11211");

使用memcached 来作PHP 的session.save_handler:
 

代码示例:
ini_set("session.save_handler","memcached"); 
ini_set("session.save_path","127.0.0.1:11211"); 

下面介绍,PHP实现多服务器session共享之memcache共享的方法。
例子:
自定义session处理机制。
 

代码示例:
<?php 
/* vim: set expandtab tabstop=4 shiftwidth=4 foldmethod=marker: */ 
//=========================================== 
// 程序:   Memcache-Based Session Class 
// 功能:   基于Memcache存储的 Session 功能类 
//=========================================== 
 
/**
 * 文件:    MemcacheSession.inc.php
 * 类名:    MemcacheSession Class
 * 功能:    自主实现基于Memcache存储的 Session 功能
 * 描述:    这个类就是实现Session的功能,基本上是通过
 *          设置客户端的Cookie来保存SessionID,
 *          然后把用户的数据保存在服务器端,最后通过
 *          Cookie中的Session Id来确定一个数据是否是用户的,
 *          然后进行相应的数据操作
 *
 *          本方式适合Memcache内存方式存储Session数据的方式,
 *          同时如果构建分布式的Memcache服务器,
 *          能够保存相当多缓存数据,并且适合用户量比较多并发比较大的情况
 *
 * 注意: 本类必须要求PHP安装了Memcache扩展或者必须有Memcache的PHP API
 *       获取Memcache扩展请访问: http://pecl.php.net
 */ 
 
//设定 SESSION 有效时间,单位是 秒 
define('SESS_LIFTTIME', 3600); 
 
//定义memcache配置信息 
define('MEMCACHE_HOST', 'localhost'); 
define('MEMCACHE_PORT', '10000'); 
 
if (!defined('MemcacheSession')) 

    define('MemcacheSession',    TRUE); 
    class MemacheSession 
    { 
        // {{{ 类成员属性定义 
        static  $mSessSavePath; 
        static  $mSessName; 
        static  $mMemcacheObj; 
        // }}} 
 
        // {{{ 初始化构造函数 
        /**
     * 构造函数
     *
     * @param string $login_user    登录用户
     * @param int $login_type       用户类型
     * @param string $login_sess    登录Session值
     * @return Esession
     */ 
        public function __construct() 
        { 
            //我的memcache是以php模块的方式编译进去的,可以直接调用 
            //如果没有,就请自己包含 Memcache-client.php 文件 
            if (!class_exists('Memcache') || !function_exists('memcache_connect')) 
            { 
                die('Fatal Error:Can not load Memcache extension!'); 
            } 
 
            if (!empty(self::$mMemcacheObj) && is_object(self::$mMemcacheObj)) 
            { 
                return false; 
            } 
 
            self::$mMemcacheObj = new Memcache; 
 
            if (!self::$mMemcacheObj->connect(MEMCACHE_HOST , MEMCACHE_PORT)) 
            { 
                die('Fatal Error: Can not connect to memcache host '. MEMCACHE_HOST .':'. MEMCACHE_PORT); 
            } 
 
            return TRUE; 
        } 
        // }}} 
 
    /** {{{ sessOpen($pSavePath, $name)
     *
     * @param   String  $pSavePath
     * @param   String  $pSessName
     *
     * @return  Bool    TRUE/FALSE
     */ 
        public function sessOpen($pSavePath = '', $pSessName = '') 
        { 
            self::$mSessSavePath    = $pSavePath; 
            self::$mSessName        = $pSessName; 
            return TRUE; 
        } 
        // }}} 
 
    /** {{{ sessClose()
     *
     * @param   NULL
     *
     * @return  Bool    TRUE/FALSE
     */ 
        public function sessClose() 
        { 
            return TRUE; 
        } 
        // }}} 
 
    /** {{{ sessRead($wSessId)
     *
     * @param   String  $wSessId
     *
     * @return  Bool    TRUE/FALSE
     */ 
        public function sessRead($wSessId = '') 
        { 
            $wData = self::$mMemcacheObj->get($wSessId); 
 
            //先读数据,如果没有,就初始化一个 
            if (!empty($wData)) 
            { 
                return $wData; 
            } 
            else 
            { 
                //初始化一条空记录 
                $ret = self::$mMemcacheObj->set($wSessId, '', 0, SESS_LIFTTIME); 
                if (TRUE != $ret) 
                { 
                    die("Fatal Error: Session ID $wSessId init failed!"); 
                    return FALSE; 
                } 
                return TRUE; 
            } 
        } 
        // }}} 
 
        /** {{{ sessWrite($wSessId, $wData)
     *
     * @param   String  $wSessId
     * @param   String  $wData
     *
     * @return  Bool    TRUE/FALSE
     */ 
        public function sessWrite($wSessId = '', $wData = '') 
        { 
            $ret = self::$mMemcacheObj->replace($wSessId, $wData, 0, SESS_LIFTTIME); 
            if (TRUE != $ret) 
            { 
                die("Fatal Error: SessionID $wSessId Save data failed!"); 
                return FALSE; 
            } 
            return TRUE; 
        } 
        // }}} 
 
    /** {{{ sessDestroy($wSessId)
     *
     * @param   String  $wSessId
     *
     * @return  Bool    TRUE/FALSE
     */ 
        public function sessDestroy($wSessId = '') 
        { 
            self::sessWrite($wSessId); 
            return FALSE; 
        } 
        // }}} 
 
    /** {{{ sessGc()
     *
     * @param   NULL
     *
     * @return  Bool    TRUE/FALSE
     */ 
        public function sessGc() 
        { 
            //无需额外回收,memcache有自己的过期回收机制 
            return TRUE; 
        } 
        // }}} 
 
    /** {{{ initSess()
     *
     * @param   NULL
     *
     * @return  Bool    TRUE/FALSE
     */ 
        public function initSess() 
        { 
            //不使用 GET/POST 变量方式 
            ini_set('session.use_trans_sid',    0); 
 
            //设置垃圾回收最大生存时间 
            ini_set('session.gc_maxlifetime',   SESS_LIFTTIME); 
 
            //使用 COOKIE 保存 SESSION ID 的方式 
            ini_set('session.use_cookies',      1); 
            ini_set('session.cookie_path',      '/'); 
             
            $domain = '.imysql.cn'; 
            //多主机共享保存 SESSION ID 的 COOKIE 
            ini_set('session.cookie_domain',    $domain); 
 
            //将 session.save_handler 设置为 user,而不是默认的 files 
            session_module_name('user'); 
 
            //定义 SESSION 各项操作所对应的方法名: 
            session_set_save_handler( 
                array('MemacheSession', 'sessOpen'),   //对应于静态方法 My_Sess::open(),下同。 
                array('MemacheSession', 'sessClose'), 
                array('MemacheSession', 'sessRead'), 
                array('MemacheSession', 'sessWrite'), 
                array('MemacheSession', 'sessDestroy'), 
                array('MemacheSession', 'sessGc') 
            ); 
 
            session_start(); 
            return TRUE; 
        } 
        // }}} 
    }//end class 
}//end define 
 
$memSess    = new MemacheSession; 
$memSess->initSess(); 
?> 

在程序中的头文件中直接包含 MemacheSession.inc.php 即可使用该类。

测试实例。
1,创建一个session
 

代码示例:
<?php 
//set_session.php 
session_start(); 
if (!isset($_SESSION['admin'])) { 
    $_SESSION['TEST'] = 'wan'; 

print $_SESSION['admin']; 
print "/n"; 
print session_id(); 
?>

2,用sessionid到memcached中查询:
 

代码示例:
<?php 
//get_session.php 
$mem = new Memcache; 
$mem->connect("127.0.0.1", 11211); 
var_dump($mem->get('0935216dbc0d721d629f89efb89affa6')); 
?>

备注:memcache PECL 未来版本中,可以直接设置 php.ini设定session.save_handler。

比如:
 

session.save_handler = memcache 
session.save_path = "tcp://host:port?persistent=1&weight=2&timeout=2&retry_interval=15,tcp://host2:port2" 

    
最新技术文章:
▪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 队列服务的简单示例
IT科技资讯 iis7站长之家
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


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

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

浙ICP备11055608号-3