0
点赞
收藏
分享

微信扫一扫

常见PHP面试题(2)(PHP面试笔试题)

刘员外__ 2022-02-16 阅读 50

文章目录

一、你会如何查找并清理 Redis 中由于业务逻辑不合理产生的垃圾数据

  1. 先做数据备份,然后写个脚本,scan所有key,统计前缀,根据前缀对应到业务中,再挨个删除。
  2. 下载阿里云的备份数据或者redis 的 .rdb 备份文件到本地进行分析
    工具推荐: redis-rdb-tools
    sripathikrishnan/redis-rdb-tools
    阿里云帮助文档 > 云数据库 Redis 版 > 最佳实践 > Redis 内存分析方法
  3. 排查业务代码,找出之前废弃业务的redis键手动删除处理
  4. 查看一个rediskey的空闲时间,不需要的手动处理
  5. 使用Redis提供的数据过期策略,传送门

二、假如有一套社区系统,每次访问帖子详情需要消耗大量的资源,如何设计缓存能有效提高热门帖子的访问速度

  1. 页面级别的缓存
  2. redis数据缓存

三、请解释如下 SQL 的含义,并阐述如果这个SQL查询很慢,你会怎么分析并解决这个问题

select count(*) as total, platform, event_name from callback_event GROUP BY platform, event_name ORDER BY platform, total DESC LIMIT 10;

四、在一个框架中比较重要的模块是路由,根据你的经验你会怎么实现 http://example.com/user/index/create 这种形式的路由解析

  • 获取 pathinfo
 $pathinfo = explode('/', trim($_SERVER['PATH_INFO'], "/"));
  • 获取模块
$_GET['m'] = (!empty($pathinfo[0]) ? $pathinfo[0] : 'index');
array_shift($pathinfo); //将数组开头的单元移出数组
  • 获取 control
$_GET['c'] = (!empty($pathinfo[0]) ? $pathinfo[0] : 'index');
array_shift($pathinfo); //将数组开头的单元移出数组
  • 获取 action
$_GET['a'] = (!empty($pathinfo[0]) ? $pathinfo[0] : 'index');
举报

相关推荐

0 条评论