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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...