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

本文探讨了在本地缓存与远程数据加载之间的平衡策略,通过一个PHP脚本实例展示了如何根据时间戳判断是否从远程获取最新数据,以及如何将远程数据转换为本地缓存,确保数据的时效性和减少网络请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?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);
  
?>

转载于:https://my.oschina.net/tiwer/blog/199856

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值