ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
##方案三:定时读取缓存方式开发首页接口 流程:http请求 -> 缓存(crontab从数据库获取缓存) -> 封装并返回数据 学习要点: 1. 掌握如何编写定时脚本程序 2. 理解服务器如何提前准备数据 ![](https://box.kancloud.cn/c289d209a55ec14e495212d69f0d68c9_602x330.png) *增加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'); ```