首页 > 编程 > PHP > 正文

PHP开发APP接口(五):首页APP接口开发

2019-11-06 08:19:27
字体:
来源:转载
供稿:网友

方案一:读取数据库方式开发首页接口

流程: 从数据库获取信息 -> 封装 -> 生成接口数据 应用场景:数据时效性,比较高的系统 学习要点: 1. 掌握如何获取数据; 2. 掌握如何将获取的数据生成通信数据; 详细流程: http请求 -> 服务器 -> 查询数据 -> 返回数据

文件链接:var/www/app/list.php

// 封装输出数据类require_once('./response.php');// 引入的 db.php 数据库类需要进行改动require_once('./db.php');$page = isset($_GET['page']) ? $_GET['page'] : 1;$pageSize = isset($_GET['pagesize']) ? $_GET['pagesize'] : 1;if (!is_numeric($page) || !is_numeric($pageSize)) { return Response::show(401, '数据不合法');}$offset = ($page-1) * $pageSize;$sql = "select * from mk_user where score != 0 order by id desc limit " . $offset . "," . $pageSize;// $sql = "select * from mk_user";// $result = MySQL_query($sql, $connect);// echo mysql_fetch_row($result);// var_dump($result);try { $connect = Db::getInstance()->connect();} catch(Exception $e) { return Response::show(403, '数据库连接失败', $users);}$result = mysql_query($sql, $connect);$users = array();while ($user = mysql_fetch_assoc($result)) { $users[] = $user;}if($users) { return Response::show(200, '首页数据获取成功', $users);} else { return Response::show(400, '首页数据获取失败', $users);}

文件链接:var/www/app/db.php ~~~ class Db { static PRivate instance;//保存类的实例staticprivate_connectSource; // 连接的资源 private $_dbConfig = array( ‘host’ => ‘192.168.2.110’, ‘user’ => ‘root’, ‘passWord’ => ‘root’, ‘database’ => ‘muke’, );

// 构造函数需要设置成私有,防止被其他类实例化private function __construct() {}// 访问实例的公共方法static public function getInstance() { // 是否实例,如果没有则实例化类 if (!self::$_instance instanceof self) { self::$_instance = new self(); } return self::$_instance;}public function connect() { if(!self::$_connectSource) { self::$_connectSource = mysql_connect($this->_dbConfig['host'], $this->_dbConfig['user'], $this->_dbConfig['password']); if(!self::$_connectSource) { // 此处注意,如果数据库连接失败,需要抛出一个异常,以供连接时使用,连接需要用 try-catch 测试连接。 throw new Exception('mysql connect error ' . mysql_error()); // die('mysql connect error'. mysql_error()); } mysql_select_db($this->_dbConfig['database'], self::$_connectSource); mysql_query("set names UTF8", self::$_connectSource); return self::$_connectSource; }}

} ~~~


方案二:读取缓存方式开发首页接口

流程:从数据库获取信息 -> 封装(读取缓存,再次读取) -> 返回数据 用途:减少数据库压力 学习要点: 1. 掌握静态缓存如何设置缓存失效时间; 2. 如何设置缓存; 详细流程:

文件连接:var/www/app/list.php ~~~

方案三:定时读取缓存方式开发首页接口

流程:http请求 -> 缓存(crontab从数据库获取缓存) -> 封装并返回数据 学习要点: 1. 掌握如何编写定时脚本程序 2. 理解服务器如何提前准备数据

增加crontab执行文件:var/www/app/cron.php

// 让crontab定时执行的脚本程序 */5 * * * * /usr/bin/php /var/www/app/cron.php// 获取user表中6条数据require_once('./db.php');require_once('./file.php');$sql = "select * from mk_user where score != 0 order by id desc";try { $connect = Db::getInstance()->connect();} catch(Exception $e) { // $e->getMessage(); // 链接失败,在日志文件里记录失败的记录 file_put_contents('./logs/' . date('y-m-d') . '.txt', $e->getMessage()); return;}$result = mysql_query($sql, $connect);$users = array();while ($user = mysql_fetch_assoc($result)) { $users[] = $user;}$file = new File();if($users) { // 有数据的话,把数据写到缓存文件里 $file->cacheData('index_cron_cache', $users);} else { file_put_contents('./logs/' . date('y-m-d') . '.txt', "没有相关数据");}return;

上面的crontab没5分钟执行一次,当有数据时,在list.php文件开头能够查询到数据:var/www/app/list.php

require_once('./response.php');require_once('./file.php');// 增加下面对缓存进行查询$file = new File();$data = $file->cacheData('index_cron_cache');if ($data) { return Response::show(200, '首页数据获取成功', $data);} else { return Response::show(400, '首页数据获取失败', $data);}require_once('./db.php');
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表