用基于光标的分页登录实时数据
钥匙要点
分页是一种用于将大记录集分为较小的部分(称为页面)的方法。由于频繁更新,在添加或删除数据时实施分页可能会具有挑战性。
>- >各种社交网站,例如Twitter和Facebook,已成功实施了实时数据分页。他们使用基于光标的分页,该分页依赖于唯一的标识符(光标),而不是分页的记录计数。
基于光标的分页需要至少一个具有唯一顺序值的列,类似于Twitter的MAX_ID参数或参数后的Facebook。它还需要一个计数参数来过滤有限数量的结果,以及下一个和上一个URL才能浏览数据。
基于光标的分页通常比基于偏移的分页更有效,更可靠,尤其是用于实时数据或大型数据集。它减少了服务器上的负载,并使分页过程更快,更高效。
- > >实现基于光标的分页涉及几个步骤,包括确定用作光标的唯一标识符,修改数据库查询以基于此光标获取记录,并更新应用程序的UI以处理流行的数据并允许用户来处理用户浏览页面。
- 实时数据分页 中识别问题 Wikipedia将实时数据定义为收集后立即提供的信息。提供的信息的及时性没有延迟。 在这样的应用程序中,由于频繁更新,很难提供准确的分页数据。让我们看一下在管理实时数据时使用标准分页的问题。
- >
- > 假定数据是静态的,并且不经常变化 - 在默认分页中,检索到的记录集被分为许多页面。由于数据并不经常更改,用户觉得分页正常工作,但是在添加新数据或删除现有数据时,分页的结果变得不准确。
>
分页仅考虑记录计数,而不是每个单独的记录 - 记录使用总记录计数分为页面,并正常分页。它没有考虑每个记录是否属于分页上的正确页面。这可以导致记录的多余显示。
>考虑到这些要点,很难用来默认分页技术来处理实时数据。让我们尝试使用实际情况来识别问题。
假设我们最初有20个记录,并且我们使用10个记录作为将记录分解为页面的极限。下图显示了如何将记录分成页面。
>
>现在假设在我们在第一页上时,结果集由五个新记录更新。下图显示了当前方案。
>现在我们导航到第二页。根据我们的第一张图像,它应从1-10中检索记录。但是,将检索具有数字15-6的记录。您可以清楚地看到,第一页以及第二页都显示了记录数字15-11。
实时数据分页的实际用例我们都知道,重新发明车轮不是开发人员应该做的。我们应该研究在考虑建立自己的问题之前解决这些问题的现有网页技术。许多社交网站(例如Twitter和Facebook)在其用户配置文件中提供了实时数据。在本节中,我们将使用一些最受欢迎的网站来研究实时数据分页的实际用例。
> Twitter API光标的分页
Twitter用户配置文件经常用新的推文填充,因此Twitter时间行数据检索机制应该是实时数据供稿中识别分页技术的良好开始。让我们看看它是如何使用Twitter API方法的工作方式的。以下内容包含对Twitter API搜索推文方法的示例请求。
在上述URL中,我们请求包含“ PHP”一词的最新推文,并使用计数参数将结果设置为10块。这是偏移分页的典型行为,我们根据记录计数回复。但是在这里,我们可以看到两个距离ind_id和max_id的其他参数,这使基于光标的分页构成。让我们来看看基于光标的分页如何使用我们的早期示例。
>>我们将20个记录分为2页,并假设我们在第一页上。 5个新记录被添加到列表的顶部。以下图像预览了当前方案。
https://api.twitter.com/1.1/search/tweets.json?q=php&since_id=24012619984051000&max_id=250126199840518145&result_type=recent&count=10
现在,让我们看一下Twitter搜索请求的第一页生成的响应的一部分。您可以在此处查看完整的响应格式。
https://api.twitter.com/1.1/search/tweets.json?q=php&since_id=24012619984051000&max_id=250126199840518145&result_type=recent&count=10
> search_metadata部分提供了有关结果的详细信息。如果有更多记录可以分页,它将生成Next_Results URL。我们主要使用max_id参数进行分页。对于每个响应,我们将检索max_id参数,我们可以使用它来生成下一个结果集。我们使用MAX_ID参数接收比给定ID的更古老的结果。
>在我们的示例中,在显示记录20-11时,我们应该将MAX_ID参数作为记录11检索。然后,我们将MAX_ID传递以生成下一个结果集。因此,我们将获得准确的结果,如下图所示。
。
基于Facebook API光标的分页
> 与Twitter相比,Facebook的API实现略有不同,即使两个API都使用相同的理论。让我们看一下示例Facebook API请求的响应。>
如您所见,Facebook使用两个基于字符串的光标,以进行分页,而不是aft_id and max_id。在Facebook中,前光标将指向页面的开始,而后光标指向页面末尾。大多数API具有实时数据使用此机制,可以通过其结果准确地划分。作为开发人员,我们需要了解基于光标的分页背后的理论,以便使用现有的API并在必要时创建自己的理论。
"search_metadata": { "max_id": 250126199840518145, "since_id": 24012619984051000, "refresh_url": "?since_id=250126199840518145&q=php&result_type=recent&include_entities=1", "next_results": "?max_id=249279667666817023&q=php&count=10&include_entities=1&result_type=recent", "count": 10, "completed_in": 0.035, "since_id_str": "24012619984051000", "query": "php", "max_id_str": "250126199840518145" }
实施实时数据分页是本教程范围之外的复杂任务,因此我们将研究基本需求和创建简单的分页机制以了解基于光标的分页的过程。
让我们使用先前讨论的示例来确定基于光标的分页的基本组成部分。
。光标 - 我们需要至少具有一个具有唯一顺序值的列来实现基于光标的分页。这可能类似于Twitter的MAX_ID参数或参数后的Facebook。
- 计数 - 我们需要计数参数,就像基于偏移的分页一样,在光标之前或之后过滤有限数量的结果。
- >
下一个URL - 如果我们通过API提供分页,则需要。用户需要知道下一页是否可用以及如何获取下一个数据集。
上一个URL - 如果我们通过API提供分页,则需要。用户需要知道上一页是否可用以及如何获取下一个数据集。
-
这些是基于光标的分页的基本需求。开发人员经常与基于偏移的分页合作,很少有机会与基于光标的分页合作,因此在适当的情况下确定每种技术的差异和好处很重要。
>>>>>>
在偏移分页中,我们可以按任何列进行排序并分配结果,而基于光标的分页则取决于唯一光标列的分类。
偏移分页还包含页码,除了下一个链接和上一个链接。但是由于数据的高度动态性质,我们无法为基于光标的分页提供页码。
- 通常,偏移分页允许我们在两个方向上导航,而基于光标的分页大多用于向前导航。
-
到目前为止,我们研究了基于光标的分页的基本需求和差异。现在,我们可以进入示例实现以确定其工作原理。
实现基于光标的分页
- 首先,我们使用PDO创建数据库连接。然后,我们执行句柄汇轮函数来插入结果。 然后,我们检查MAX_ID或MIN_ID参数是否可在URL中使用。 MAX_ID与Facebook的参数相似,并用于向前导航。 MIN_ID与Facebook的参数相似,并用于向后导航。另外,我们设置了导航方向,使用max_id或min_id和分类顺序的Where子句。> 然后,我们执行查询以获取完整的结果计数,然后进行相同的查询,并带有限制性语句以缩小结果。 >
- 如果我们朝着先前的方向进行遍历,则必须将排序更改为ASC。否则,它将检索最新记录,而不是上一页。我们扭转了数组中的记录以显示它们为下降。
然后,我们循环通过结果。循环时,我们将第一个记录的ID分配为MIN_ID,最后记录为MAX_ID。这些光标值用于通过消除重复来过滤准确的数据。
最后,我们可以查看用于实现分页链接的Paginator函数。
https://api.twitter.com/1.1/search/tweets.json?q=php&since_id=24012619984051000&max_id=250126199840518145&result_type=recent&count=10
>现在我们有了一个简单的数据分页示例,以了解实时数据分页的工作方式。使用此代码并通过结果分页。在登机时,在表末尾添加一些记录以实时。然后向后和向后铺设以检查页面中的数据重复。在基于偏移的分页上做同样的事情以了解差异。
结论
在本教程中,我们通过基于光标的分页了解了实时数据分页背后的理论。让我们在下面的评论中知道您的想法和经验! 基于光标的分页的常见问题(常见问题解答)
>基于偏移量和基于光标的分页之间的主要区别是什么?
基于偏移的分页涉及从一开始就跳过一定数量的记录,然后获取设定的记录。但是,如果在分页上添加或删除了数据,此方法可能会导致重复记录等问题。另一方面,基于光标的分页使用从最后一个获取的记录中使用唯一的标识符(光标)来检索下一组记录。此方法更有效,避免了与基于偏移的分页相关的问题,使其非常适合实时数据。
>>基于光标的分页如何处理实时数据?基于基于的分页对于实时数据特别有效,因为它使用了最后一个获取的记录中使用唯一的标识符(光标)来检索下一组记录。这意味着,即使添加了新数据或在分页过程中删除了现有数据,光标仍将指向正确的下一个记录,以确保不会错过或重复记录。可以与任何类型的数据一起使用?但是,对于效率至关重要的实时数据或大型数据集特别有效。光标可以是任何唯一的标识符,例如时间戳或唯一的ID,可用于获取下一组记录。
>基于光标的分页如何改善性能?基于光标的分页通过减少需要立即处理的数据量来提高性能。基于光标的分页只能获取所有记录,而是跳过一定数字,而只能根据光标获取下一组记录。这样可以减少服务器上的负载,并使分页过程更快,更高效。
>>如何在我的应用程序中实现基于光标的分页?首先,您需要确定用作光标的唯一标识符。这可能是时间戳,独特的ID或任何其他独特的值。接下来,您需要修改数据库查询以根据此光标获取记录。最后,您需要更新应用程序的UI来处理分页的数据并允许用户在页面上导航。
基于Cursor的基于Cursor的分页的潜在缺陷是什么?分页比基于偏移的分页更有效和可靠,它确实具有一些潜在的缺点。例如,实施可能更复杂,尤其是如果您的数据没有明确的唯一标识符作为光标。此外,它可能不适用于所有用例,例如当您需要跳到特定的页码时。
>可以将基于光标的分页用于GraphQl?
是的,是的,Cursor基于GraphQl可以使用基于基础的分页。实际上,GraphQL通过中继规范对基于光标的分页有内置支持。这使您可以轻松地在GraphQl应用程序中实现高效,可靠的分页。>
>基于光标的分页如何使用MySQL?标识符,例如时间戳或独特的ID,作为光标。然后,您可以使用“ where”和“ limit”子句来修改SQL查询以根据此光标获取记录,以指定以获取的记录范围。>如何在其中使用Slack Slack使用基于光标的分页。 API?
Slack在其API中使用基于光标的分页有效获取大量数据。他们使用唯一的标识符作为光标,并在API响应中提供此光标,以允许客户端获取下一组记录。这使他们可以处理具有高性能和可靠性的大型数据集。
>基于光标的分页的JSON API规范是什么?标识符是光标,并将此光标包括在API响应的“链接”对象中。这使客户可以通过遵循提供的链接轻松获取下一组记录。该规范提供了一种在JSON API中实现基于光标的分页的标准,一致的方法。
以上是用基于光标的分页登录实时数据的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PHP中有四种主要错误类型:1.Notice:最轻微,不会中断程序,如访问未定义变量;2.Warning:比Notice严重,不会终止程序,如包含不存在文件;3.FatalError:最严重,会终止程序,如调用不存在函数;4.ParseError:语法错误,会阻止程序执行,如忘记添加结束标签。

在PHP中,应使用password_hash和password_verify函数实现安全的密码哈希处理,不应使用MD5或SHA1。1)password_hash生成包含盐值的哈希,增强安全性。2)password_verify验证密码,通过比较哈希值确保安全。3)MD5和SHA1易受攻击且缺乏盐值,不适合现代密码安全。

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

PHP在电子商务、内容管理系统和API开发中广泛应用。1)电子商务:用于购物车功能和支付处理。2)内容管理系统:用于动态内容生成和用户管理。3)API开发:用于RESTfulAPI开发和API安全性。通过性能优化和最佳实践,PHP应用的效率和可维护性得以提升。

HTTP请求方法包括GET、POST、PUT和DELETE,分别用于获取、提交、更新和删除资源。1.GET方法用于获取资源,适用于读取操作。2.POST方法用于提交数据,常用于创建新资源。3.PUT方法用于更新资源,适用于完整更新。4.DELETE方法用于删除资源,适用于删除操作。

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7

PHP通过$\_FILES变量处理文件上传,确保安全性的方法包括:1.检查上传错误,2.验证文件类型和大小,3.防止文件覆盖,4.移动文件到永久存储位置。

在PHPOOP中,self::引用当前类,parent::引用父类,static::用于晚静态绑定。1.self::用于静态方法和常量调用,但不支持晚静态绑定。2.parent::用于子类调用父类方法,无法访问私有方法。3.static::支持晚静态绑定,适用于继承和多态,但可能影响代码可读性。
