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'?>\n";

        $xml .= "<root>\n";



        $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}>\n";

        }

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

 

你可能感兴趣的:(读取数据)