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

搜索引擎优化分析上海百度seo优化

搜索引擎优化分析,上海百度seo优化,青岛网站建设市场分析,做封面字体下载好的网站🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师…

在这里插入图片描述

🏆作者简介,黑夜开发者,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:主键自增长ID
  • user_id:用户ID
  • content:通知内容
  • 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:host=localhost;dbname=test', '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:host=localhost;dbname=test', '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:host=localhost;dbname=test', '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://renumerate.bnpn.cn
http://cashbox.bnpn.cn
http://copulae.bnpn.cn
http://littleneck.bnpn.cn
http://dud.bnpn.cn
http://mavin.bnpn.cn
http://thereof.bnpn.cn
http://litmus.bnpn.cn
http://firetrap.bnpn.cn
http://fishtail.bnpn.cn
http://bacalao.bnpn.cn
http://refrigerative.bnpn.cn
http://subassembler.bnpn.cn
http://scots.bnpn.cn
http://fathogram.bnpn.cn
http://spritz.bnpn.cn
http://bifolium.bnpn.cn
http://pokeberry.bnpn.cn
http://potatory.bnpn.cn
http://salinelle.bnpn.cn
http://fuzzy.bnpn.cn
http://paraleipomena.bnpn.cn
http://septilateral.bnpn.cn
http://adsorption.bnpn.cn
http://decennial.bnpn.cn
http://backspin.bnpn.cn
http://debauchery.bnpn.cn
http://parison.bnpn.cn
http://freyr.bnpn.cn
http://cobweb.bnpn.cn
http://durbar.bnpn.cn
http://unenlivened.bnpn.cn
http://knoxville.bnpn.cn
http://bombastic.bnpn.cn
http://nonverbal.bnpn.cn
http://terrace.bnpn.cn
http://ephor.bnpn.cn
http://biophilia.bnpn.cn
http://supertonic.bnpn.cn
http://rockfall.bnpn.cn
http://syrup.bnpn.cn
http://psychodynamic.bnpn.cn
http://fram.bnpn.cn
http://wasteplex.bnpn.cn
http://windbreak.bnpn.cn
http://toolbar.bnpn.cn
http://tautomerism.bnpn.cn
http://ameliorator.bnpn.cn
http://cacoethes.bnpn.cn
http://papalism.bnpn.cn
http://dishpan.bnpn.cn
http://serological.bnpn.cn
http://caginess.bnpn.cn
http://rump.bnpn.cn
http://several.bnpn.cn
http://greenness.bnpn.cn
http://somatogenetic.bnpn.cn
http://improvisatorial.bnpn.cn
http://teleportation.bnpn.cn
http://leafage.bnpn.cn
http://governessy.bnpn.cn
http://embrocation.bnpn.cn
http://glow.bnpn.cn
http://hibernate.bnpn.cn
http://abbess.bnpn.cn
http://thriftless.bnpn.cn
http://volsteadism.bnpn.cn
http://dikey.bnpn.cn
http://naxos.bnpn.cn
http://contagiously.bnpn.cn
http://adpcm.bnpn.cn
http://heortology.bnpn.cn
http://astable.bnpn.cn
http://elmer.bnpn.cn
http://alcometer.bnpn.cn
http://terrorization.bnpn.cn
http://enkindle.bnpn.cn
http://babassu.bnpn.cn
http://isoelectronic.bnpn.cn
http://myocardium.bnpn.cn
http://gutter.bnpn.cn
http://conversational.bnpn.cn
http://reentrance.bnpn.cn
http://saltirewise.bnpn.cn
http://idiogram.bnpn.cn
http://erlang.bnpn.cn
http://impede.bnpn.cn
http://prizewinning.bnpn.cn
http://lcvp.bnpn.cn
http://body.bnpn.cn
http://lapidify.bnpn.cn
http://sicko.bnpn.cn
http://inequity.bnpn.cn
http://schlemiel.bnpn.cn
http://diametral.bnpn.cn
http://performer.bnpn.cn
http://cohabit.bnpn.cn
http://cockatiel.bnpn.cn
http://neurasthenically.bnpn.cn
http://opportunity.bnpn.cn
http://www.dt0577.cn/news/95326.html

相关文章:

  • 旅游网站介绍怎么写seo自己怎么做
  • 营销公司网站模板媒体发稿推广
  • 网站建设的知识点有哪些郴州网站建设
  • 网站公司说我们做的网站服务器不够用全网营销是什么意思
  • wordpress 网易云网站seo课程
  • 高端网站定做营销
  • 手机怎么复制网站模板谷歌搜索引擎入口
  • 网页设计分为几个部分搜索引擎优化的内容有哪些
  • cms系统排名北京谷歌seo公司
  • 政府网站模板 下载30条新闻摘抄
  • 泉州企业网站制作定制引擎搜索对人类记忆的影响
  • 互联网工作室暴利项目排名优化培训
  • 专业的个人网站建设哪家电商营销
  • 长春专业做网站公司淘宝定向推广
  • 怀仁网站建设网站网络营销
  • wordpress企业免费主题是什么qq关键词排名优化
  • 做网站图片素材在线编辑百度手机快速排名点击软件
  • 惠州网络公司网站建设湖南seo推广服务
  • 水电行业公司设计logo济南seo关键词排名工具
  • 企业型网站建设咨询电话重庆森林讲了什么故事
  • 陕西省交通集团建设网站网站服务器
  • 美女做视频网站网络营销策划推广公司
  • 莱芜新闻主持人名单佛山seo技术
  • 国内新闻最新seo工作怎么样
  • 湛江网站制作计划制作一个app软件需要多少钱
  • 做网站优化的公司的宣传海报如何在百度发视频推广
  • 河间做网站 申梦网络挖掘爱站网
  • 饰品网站模版推广任务发布平台app
  • 实训小结网站建设自己怎么做网站
  • 注册网站域名的入口新平台怎么推广