Mysql Php 推送獲取隨機數據解決分頁重覆問題

来源:https://www.cnblogs.com/leaf-cq/archive/2023/05/30/17442910.html
-Advertisement-
Play Games

或許你已經看過很多博主寫的文章,要不就是抄襲,要不就是給你一個下麵的語句,隨機是隨機了,但是多來兩頁,你會發現前面出現的數據在第三頁甚至第二頁就出現了 select * from table order by rand() 這是因為rand()機制的問題,他每次都會打亂數據給你,然後你去取的時候0- ...


或許你已經看過很多博主寫的文章,要不就是抄襲,要不就是給你一個下麵的語句,隨機是隨機了,但是多來兩頁,你會發現前面出現的數據在第三頁甚至第二頁就出現了

select * from table order by rand()

這是因為rand()機制的問題,他每次都會打亂數據給你,然後你去取的時候0-10,11-20都有可能是同一個數據,為瞭解決這個問題,我翻遍了百度終於找到一種MD5加密演算法,比如我是商城商品隨機推薦

第一步:先把id加密生成一個新的key,然後再做key字元串截取的排序 ORDER BY substr(key,start,len)

SELECT
    *,
    md5(id) as key
FROM
    ims_cjdc_jfgoods
ORDER BY
    substr(key,3,6)
    LIMIT 0,10

我們第一步已經把id做了加密,生成了一個新的key,第二步要和前端進行聯動了,因為單純的sql是解決不了這個問題的,第二步就是把每個用戶的第一次請求生成一個0~32之間的隨機數

# 第一次請求的key,不要存緩存,返回給前端讓他自己存起來
$keystart = I('key');
if(!$keystart) {
    $keystart = rand(0,32);
}

第三步,根據第二步生成的隨機數形成固定的演算法,把$keystart帶入第一步的sql裡面執行,直至用戶離開頁面為止。

目前我測試了幾十萬的數據,屢試不爽,原理就是每個用戶的第一次請求都給他生成一個固定的演算法返回給前端,前端在這個頁面內把這個演算法一直回傳回來直至用戶離開頁面為止,待下次用戶進來又給他一個新的演算法重覆使用即可

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • # 數據導入 ## 使用 Insert 方式同步數據 用戶可以通過 MySQL 協議,使用 INSERT 語句進行數據導入 INSERT 語句的使用方式和 MySQL 等資料庫中 INSERT 語句的使用方式類似。 INSERT 語句支持以下兩種語法: ```SQL INSERT INTO tabl ...
  • 這是一份最好的中藥資料庫,不但欄位內容最為詳細,而且記錄數也是最多的,欄位包含:藥名、別名、漢語拼音、拉丁文名、英文名、拉丁植物動物礦物名、性味、歸經、功效、主治、用法用量、用藥禁忌、功效分類、藥理作用、中藥化學成分、選方、各家論述、考證、科屬分類、採收和儲藏、資源分佈、動植物形態、生藥材鑒定、藥用 ...
  • 《全唐詩》是清朝初年編修的彙集唐代詩歌的總集,全書共九百捲,收錄唐代詩人二千五百二十九家,詩作四萬二千八百六十三首,是中國規模最大的一部詩歌總集。(全唐詩ACCESS資料庫含記錄數有43086條) 《全宋詞》薈萃了宋代三百年間的詞作,收錄宋代詞人一千三百三十家,詞作兩萬一千一百一十六首,是中國近百年 ...
  • 大家好,接著上次和大家一起學習了《MySQL DDL執行方式-Online DDL介紹》,那麼今天接著和大家一起學習另一種MySQL DDL執行方式之pt-soc。 ...
  • 再在越來越多的地方不但需要昵稱,同時也可以設置昵稱下麵的個人簽名,官方叫“個性簽名”。百度百科的解釋是:是指你在某個論壇(BBS)註冊之後, 就可以設置自己的簽名了,即在你的每個帖子底部顯示的文字, 有些象便簽抬頭。 由於每個網友所寫的文字都不同,有格言、有諺語、有調侃語句等等,也有用圖片、動畫作為 ...
  • 在之前就弄到過個性網名和論壇簽名的數據,比如有《8萬多個網名大全QQ網名ACCESS資料庫》、《個性網名大全網路名稱大全ACCESS資料庫》《2萬多條QQ簽名論壇簽名大全ACCESS資料庫》、《24萬QQ傷感簽名論壇簽名ACCESS資料庫》、《近2萬簽名的句子網路簽名ACCESS資料庫》、《上萬條個 ...
  • 今天這一份方劑資料庫是最全也是最好的方劑資料庫,不但欄位內容多,而且記錄數也是最多的,欄位包含:名稱、組成、出處、功效、主治、加減、用法用量、製備方法、臨床應用、各家論述、用藥禁忌、附註等。 HTML內容欄位是排版好了的全部內容,具體可以從以下鏈接下載樣本: 鏈接: https://pan.baid ...
  • 雖然收集了一些古詩詞相關的資料庫,但好像沒有什麼註釋點評類的內容,而今天這份《1萬7千多首古詩詞範賞評詩詞ACCESS資料庫》包含了17704首本地賞評詩詞、12個朝代分門別類、1680位本地詩人簡介、超過50個詩詞分類欣賞。 樣本請從以下鏈接下載:鏈接: https://pan.baidu.com ...
一周排行
    -Advertisement-
    Play Games
  • GoF之工廠模式 @目錄GoF之工廠模式每博一文案1. 簡單說明“23種設計模式”1.2 介紹工廠模式的三種形態1.3 簡單工廠模式(靜態工廠模式)1.3.1 簡單工廠模式的優缺點:1.4 工廠方法模式1.4.1 工廠方法模式的優缺點:1.5 抽象工廠模式1.6 抽象工廠模式的優缺點:2. 總結:3 ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...