zoukankan      html  css  js  c++  java
  • 07 读取数据库方式开发首页接口

    一:读取数据库方式开发首页接口原理图
      从数据库获取信息--->>>>封装------>>>生成接口数据
      备注:运用场景[数据时性比较高的系统]
    二:代码实现
    
    (1)list.php
    
    <?php
    // http://app.com/list.php?page-=1&pagesize=12
    require_once('./response.php');
    require_once('./file.php');
    
    $file = new File();
    $data = $file->cacheData('index_cron_cahce');
    if($data) {
        return Response::show(200, '首页数据获取成功', $data);
    }else{
        return Response::show(400, '首页数据获取失败', $data);
    }
    exit;
    require_once('./db.php');
    require_once('./file.php');
    $page = isset($_GET['page']) ? $_GET['page'] : 1;
    $pageSize = isset($_GET['pagesize']) ? $_GET['pagesize'] : 6;
    if(!is_numeric($page) || !is_numeric($pageSize)) {
        return Response::show(401, '数据不合法');
    }
    
    $offset = ($page - 1) * $pageSize;
    
    $sql = "select * from video where status = 1 order by orderby desc limit ". $offset ." , ".$pageSize;
    $cache = new File();
    $videos = array();
    if(!$videos = $cache->cacheData('index_mk_cache' . $page .'-' . $pageSize)) {
        echo 1;exit;
        try {
            $connect = Db::getInstance()->connect();
        } catch(Exception $e) {
            // $e->getMessage();
            return Response::show(403, '数据库链接失败');
        }
        $result = mysql_query($sql, $connect); 
        
        while($video = mysql_fetch_assoc($result)) {
            $videos[] = $video;
        }
    
        if($videos) {
            $cache->cacheData('index_mk_cache' . $page .'-' . $pageSize, $videos, 1200);
        }
    }
    
    if($videos) {
        return Response::show(200, '首页数据获取成功', $videos);
    } else {
        return Response::show(400, '首页数据获取失败', $videos);
    }
    
    
    -------------------------response.php-------------
    
    
    <?php
    
    class Response {
        const JSON = "json";
        /**
        * 按综合方式输出通信数据
        * @param integer $code 状态码
        * @param string $message 提示信息
        * @param array $data 数据
        * @param string $type 数据类型
        * return string
        */
        public static function show($code, $message = '', $data = array(), $type = self::JSON) {
            if(!is_numeric($code)) {
                return '';
            }
    
            $type = isset($_GET['format']) ? $_GET['format'] : self::JSON;
    
            $result = array(
                'code' => $code,
                'message' => $message,
                'data' => $data,
            );
    
            if($type == 'json') {
                self::json($code, $message, $data);
                exit;
            } elseif($type == 'array') {
                var_dump($result);
            } elseif($type == 'xml') {
                self::xmlEncode($code, $message, $data);
                exit;
            } else {
                // TODO
            }
        }
        /**
        * 按json方式输出通信数据
        * @param integer $code 状态码
        * @param string $message 提示信息
        * @param array $data 数据
        * return string
        */
        public static function json($code, $message = '', $data = array()) {
            
            if(!is_numeric($code)) {
                return '';
            }
    
            $result = array(
                'code' => $code,
                'message' => $message,
                'data' => $data
            );
    
            echo json_encode($result);
            exit;
        }
    
        /**
        * 按xml方式输出通信数据
        * @param integer $code 状态码
        * @param string $message 提示信息
        * @param array $data 数据
        * return string
        */
        public static function xmlEncode($code, $message, $data = array()) {
            if(!is_numeric($code)) {
                return '';
            }
    
            $result = array(
                'code' => $code,
                'message' => $message,
                'data' => $data,
            );
    
            header("Content-Type:text/xml");
            $xml = "<?xml version='1.0' encoding='UTF-8'?>
    ";
            $xml .= "<root>
    ";
    
            $xml .= self::xmlToEncode($result);
    
            $xml .= "</root>";
            echo $xml;
        }
    
        public static function xmlToEncode($data) {
    
            $xml = $attr = "";
            foreach($data as $key => $value) {
                if(is_numeric($key)) {
                    $attr = " id='{$key}'";
                    $key = "item";
                }
                $xml .= "<{$key}{$attr}>";
                $xml .= is_array($value) ? self::xmlToEncode($value) : $value;
                $xml .= "</{$key}>
    ";
            }
            return $xml;
        }
    
    }
    
    
    -----------------file.php-------------------
    
    <?php
    
    class File {
        private $_dir;
    
        const EXT = '.txt';
    
        public function __construct() {
            $this->_dir = dirname(__FILE__) . '/files/';
        }
        public function cacheData($key, $value = '', $cacheTime = 0) {
            $filename = $this->_dir  . $key . self::EXT;
    
            if($value !== '') { // 将value值写入缓存
                if(is_null($value)) {
                    return @unlink($filename);
                }
                $dir = dirname($filename);
                if(!is_dir($dir)) {
                    mkdir($dir, 0777);
                }
    
                $cacheTime = sprintf('%011d', $cacheTime);
                return file_put_contents($filename,$cacheTime . json_encode($value));
            }
    
            if(!is_file($filename)) {
                return FALSE;
            } 
            $contents = file_get_contents($filename);
            $cacheTime = (int)substr($contents, 0 ,11);
            $value = substr($contents, 11);
            if($cacheTime !=0 && ($cacheTime + filemtime($filename) < time())) {
                unlink($filename);
                return FALSE;
            }
            return json_decode($value, true);
            
        }
    }
    
    $file = new File();
    
    echo $file->cacheData('test1');
  • 相关阅读:
    nuget包管理器控制台下的powershell脚本介绍
    MSSQL数据库链接字符串Asynchronous Processing=true不是异步查询吗,怎么是缓存
    .net mvc web api 返回 json 内容,过滤值为null的属性
    序列化与反序列化成XML
    ASP.NET WebForm中用async/await实现异步
    webapi集成owin使用Oauth认证时能获取accee_token仍无法登录的解决办法
    C#异常类相关总结
    从多个XML文档中读取数据用于显示webapi帮助文档
    VS代码段扩展Snippet Designer is a Visual Studio plug in which allows you to create and search for snippets inside the IDE
    【工具】CodeSmith Generator 7.0.2激活步骤
  • 原文地址:https://www.cnblogs.com/hgj123/p/4360554.html
Copyright © 2011-2022 走看看