当前位置: 首页 > news >正文

简洁网站模板下载贵溪市城乡建设局网站

简洁网站模板下载,贵溪市城乡建设局网站,手机网站模板 html5,亚马逊aws wordpress#x1f3c6;作者简介#xff0c;黑夜开发者#xff0c;CSDN领军人物#xff0c;全栈领域优质创作者✌#xff0c;CSDN博客专家#xff0c;阿里云社区专家博主#xff0c;2023年6月CSDN上海赛道top4。 #x1f3c6;数年电商行业从业经验#xff0c;历任核心研发工程师… 作者简介黑夜开发者CSDN领军人物全栈领域优质创作者✌CSDN博客专家阿里云社区专家博主2023年6月CSDN上海赛道top4。 数年电商行业从业经验历任核心研发工程师项目技术负责人。 本文已收录于PHP专栏PHP进阶实战教程。 另有专栏PHP入门基础教程希望各位大佬多多支持❤️。 欢迎 点赞✍评论⭐收藏 文章目录 一、背景二、准备工作三、实现逻辑3.1 查询用户的已发送通知数量3.2 发送通知3.3 获取用户通知列表3.4 清理过期通知记录3.5 定时任务 四、结语 一、背景 在开发应用程序中经常需要向用户推送消息通知但是为了避免过多的打扰用户我们希望限制每天最多通知2次。本篇博文将介绍如何使用 PHP 和 Redis 实现这一功能。 二、准备工作 首先我们需要准备好数据库和 Redis 服务。在 MySQL 数据库中创建一个 user_notifications 表, 包含以下字段 id主键自增长IDuser_id用户IDcontent通知内容created_at记录创建时间 此外还需要安装 Redis 扩展在 PHP 中可以通过以下命令安装 $ pecl install redis常见的推送消息场景如下图。 三、实现逻辑 3.1 查询用户的已发送通知数量 在用户登录或接收新通知时我们需要查询用户今天已发送的通知数量。我们可以利用 Redis 的 Sorted Set 数据结构来存储每个用户的通知记录。将用户ID作为 Sorted Set 的 key通知的发送时间戳作为 score 值这样就可以按照时间顺序存储用户的通知记录。 使用以下代码实现查询用户已发送通知数量的函数 function getNotificationCount($userId) {$redis new Redis();$redis-connect(127.0.0.1, 6379);$todayStart strtotime(today); // 当天开始的时间戳$todayEnd strtotime(tomorrow) - 1; // 当天结束的时间戳$count $redis-zcount(user_notifications: . $userId, $todayStart, $todayEnd);return $count; }3.2 发送通知 在发送通知之前先检查用户已发送通知数量是否达到限制。如果已发送通知数量大于等于2则不再发送新通知否则保存通知记录到数据库并将通知记录的发送时间戳添加到 Redis Sorted Set 中。 使用以下代码实现发送通知的函数 function sendNotification($userId, $content) {// 检查用户已发送通知数量$count getNotificationCount($userId);if ($count 2) {return false;}// 保存通知记录到数据库$pdo new PDO(mysql:hostlocalhost;dbnametest, username, password);$stmt $pdo-prepare(INSERT INTO user_notifications (user_id, content, created_at) VALUES (?, ?, NOW()));$stmt-execute([$userId, $content]);// 将通知记录的发送时间戳添加到 Redis Sorted Set$redis new Redis();$redis-connect(127.0.0.1, 6379);$redis-zadd(user_notifications: . $userId, time(), $content);return true; }3.3 获取用户通知列表 用户可以通过接口或页面查看自己的通知列表。我们可以从数据库中查询用户的通知记录并按照发送时间倒序排列。 使用以下代码实现获取用户通知列表的函数 function getNotificationList($userId) {$pdo new PDO(mysql:hostlocalhost;dbnametest, username, password);$stmt $pdo-prepare(SELECT * FROM user_notifications WHERE user_id ? ORDER BY created_at DESC);$stmt-execute([$userId]);$notifications $stmt-fetchAll(PDO::FETCH_ASSOC);return $notifications; }3.4 清理过期通知记录 为了避免 Redis Sorted Set 中存储的用户通知记录过多我们可以定时清理过期的通知记录。通过设置 Redis 的过期时间来实现自动清理。例如我们可以设置 Sorted Set 的过期时间为2天在用户查询通知列表时先删除过期的通知记录再返回有效的通知列表。 function cleanExpiredNotifications($userId) {$redis new Redis();$redis-connect(127.0.0.1, 6379);// 设置 Sorted Set 的过期时间为2天$expireTime strtotime(2 days ago);$redis-expireAt(user_notifications: . $userId, $expireTime); }3.5 定时任务 为了每天凌晨清理用户的通知记录我们可以使用 Linux 的 crontab 来定时执行清理任务。编辑 crontab 文件添加如下代码 0 0 * * * php /path/to/clean_expired_notifications.php并创建 clean_expired_notifications.php 文件内容如下 ?phprequire_once redis.php;$pdo new PDO(mysql:hostlocalhost;dbnametest, username, password); $stmt $pdo-prepare(SELECT DISTINCT user_id FROM user_notifications); $stmt-execute();$userIds $stmt-fetchAll(PDO::FETCH_COLUMN);foreach ($userIds as $userId) {cleanExpiredNotifications($userId); }四、结语 通过 PHP 和 Redis 实现用户消息推送每天最多通知2次的功能并结合定时任务清理过期通知记录可以有效地避免过多地打扰用户。以上是基本实现逻辑和代码示例你可以根据自己的实际需求进行修改和扩展例如根据不同用户设置不同的通知限制次数等。 推荐您阅读本专栏其他内容PHP进阶实战教程相信不会让您失望。如果你对上面的功能有疑问随时欢迎与我交流。
http://www.w-s-a.com/news/332472/

相关文章:

  • 企业门户网站平台建设招标采购文件长沙做网站找哪家好
  • 关于实验室建设的英文网站图文分销系统开发
  • wordpress 媒体库管理自己的网站什么做优化
  • 网站建设基本流程价格厦门seo网站推广
  • 辽宁响应式网站建设价格企业所得税率
  • 网站编辑及seo招聘上海做网站公司做网站的公司
  • 杭州四喜做网站建设么ja.wordpress.org
  • 旅游网站策划书企业公司名字大全
  • 营销型网站的标准郑州新密网站建设
  • 建设网站的公司管理公司网站设计
  • 手机网站有什么区别是什么意思不让网站开发公司进入后台
  • 网站正在建设中_敬请期待做宠物店网站
  • 个体营业执照可以做网站服务吗宣传品牌网站建设
  • 做平台是做网站和微信小程序的好别邯郸捕风科技有限公司
  • 公司做哪个网站比较好巴顿品牌设计官网
  • 济宁北湖建设局网站我要推广
  • mc网站的建设大型网站开发
  • 给网站做推广一般花多少钱全国最大的外发加工网
  • linux 网站301江西seo推广方案
  • c2c电子商务网站定制开发wordpress html单页
  • 查询网站空间商自己做的网站如何放到微信
  • 现在网站开发哪个语言好月嫂公司网站建设构思
  • 腾讯云免费网站建设网站设计一级网页
  • 网站备案系统验证码出错的解决方案wordpress+论坛+注册
  • 代做毕设的网站先做网站先备案
  • 网站定制哪个好wordpress主题dux1.9
  • 怎么自己做网站地图网站建设弹窗代码
  • wordpress 作品集网站企业做网站建设的好处
  • 公司开发的网站健身网站开发项目总结
  • 怎样做游戏网站网站建设万首先金手指14