获取远程数据本地缓存到PHP数组

<?php 

/* 本地缓存文件名称 */
$tempfile = "sms.php";
$smsdata = array();
$getTime = 3 ;


/**
 * 文件是否需要读取远程
 *
 * @return boolean 获取远程数据文件
 */
function getFileReader() {
    
    /* 引入全局变量 */
    global $tempfile,$smsdata,$getTime;    
    
    try {
        
        if( time() - filemtime($tempfile) < $getTime ) {
            /* 本地 */
            $smsdata = include $tempfile;
            
        } else {
            /* 远程 */
            if( getHttpFileGyArray() === false ) $smsdata = include $tempfile;
        }
        
        
    } catch (FtpException $e) {
        /* 远程 */
        if( getHttpFileGyArray() === false ) $smsdata = array();    
    }
}


/**
 * 获取HTTP请求远程数据文件
 *
 * @param string $url 地址
 *
 * @return boolean/array 获取远程数据文件
 */
function getHttpFileGyArray( $url ) {
    
    /* 引入全局变量 */
    global $tempfile,$smsdata;
    
    try {

        /* 读取数据 */
        $text = @file_get_contents($url);
        $text = explode('@',$text);
        
        /* 生成PHP数组内容 */
        foreach( $text as $key => $row ) {
            $at = explode('|',$row);        
            $smsdata[$at[0]]['dx'] = $at[1];
        }
        
        /* 缓存到本地 */
        $content  = "<?php\n\n return ".var_export($smsdata,  true).";\n";    
        file_put_contents($tempfile, $content);
        
    } catch (FtpException $e) {
        $smsdata = array();
        return false;
    }
    return true;
 }
 
 
 getFileReader(); 
 print_r($smsdata);
  
?> 
posted @ 2012-05-28 10:08  wgw8299  阅读(879)  评论(0编辑  收藏  举报