原创 php結合redis查詢附近的門店和商鋪

策略 假象把中國分成,若干個一平方公里的單元格 1)、用戶位置的變更,理解爲一個單元格移動到另外一個單元格(或者不移動) 2)、用戶查找附近,理解爲查找,自己所在方塊的的所有人 數據結構 1)、用戶基本信息 緯度、經度、GeoHash值(經

原创 PHP+Redis實現秒殺

思路: 1. 初始化:先將10件商品push到商品列表(seckill_goods:1)。 2. 搶購:利用pop操作的原子性,每成功搶購1件商品就從該列表pop一個數,並將該用戶push到訂單列表(seckill_order:1)。當商品

原创 mysql查詢附近門店

mysql 查詢一個地點(經緯度) 附近N公里內的數據。(根據一個地點的經緯度查詢這個地點方圓幾公里內的數據)1.創建測試表 CREATE TABLE `location` ( `id` int(10) unsigned NOT NULL

原创 thinkphp5自定義sql排序

先列下目標sql語句 SELECT * FROM `table` WHERE `id` IN (423603,423605,423606) ORDER BY FIELD(`id`, 423603,423606,423605) wher

原创 php版雪花算法生產唯一ID

<?php class SnowFlake { const TWEPOCH = 1288834974657; // 時間起始標記點,作爲基準,一般取系統的最近時間(一旦確定不能變動) const WORKER_ID_BI

原创 java和php保持一致的md5加密

import java.security.MessageDigest; public class test2 { public static void main(String[] args) { String st

原创 rabbitmq新版本使用

  生產者 <?php $exchangeName = "sendMessage"; $queueName = "sendMessageQueue"; $routeKey = "sendMessageKey"; $message = "

原创 golang的Md5加密的2種方法

package main import (   "crypto/md5"   "fmt"   "io"   "log") //方式一func getMd5String1(str string) string {   m := md5.New

原创 mysql優化: 內存表和臨時表

由於直接使用臨時表來創建中間表,其速度不如人意,因而就有了把臨時表建成內存表的想法。但內存表和臨時表的區別且並不熟悉,需要查找資料了。一開始以爲臨時表是創建後存在,當連接斷開時臨時表就會被刪除,即臨時表是存在於磁盤上的。而實際操作中發現臨時

原创 不遞歸的方式更新所有用戶的下屬ID集合

/** * 批量更新xw_kefu的sonIds * @author jack */ function kefu_update_kefuids() { set_time_limit(0); global $db;

原创 圖解樂觀鎖、隊列、悲觀鎖

悲觀鎖 FIFO隊列思路 樂觀鎖思路

原创 opcode配置說明

; opcache的開關,關閉時代碼不再優化. opcache.enable=1 ; Determines if Zend OPCache is enabled for the CLI version of PHP opcache.ena

原创 PHP遞歸所有下級

/** * 獲取用戶下屬ID集合 * @param $uid int * @param $ids string * @author jack * @throws string * @return string */ publ

原创 thinkphp5.1 創建定時任務

1.在application目錄下創建crontab模塊(統一存放定時任務) 2.在command目錄下創建Task.php 代碼如下: <?php namespace app\crontab\command; use think\c

原创 ThinkPHP5 <= 5.0.22 遠程代碼執行高危漏洞

漏洞描述 由於ThinkPHP5框架對控制器名沒有進行足夠的安全檢測,導致在沒有開啓強制路由的情況下,黑客構造特定的請求,可直接GetWebShell。 漏洞評級 嚴重 影響版本 ThinkPHP 5.0系列 < 5.0.23ThinkPH