原创 laravel 任務調度器

背景:在實際工作業務中,經常要用到異步任務的方式來進行相關(耗時)任務的處理,這時可能需要採取定時任務的方式來進行。linux自帶的crontab定時器工具能很好的解決這個問題。每次項目上線的時候,如有新的異步任務腳本就必定要×××器管理

原创 mysql僅查詢一條數據時的雷區

場景:有用戶表user,有id,email,user_name,mobile等字段,現在要求根據指定email帳號查詢一個用戶。 乍一看,這個需求簡單,不用考慮直接寫出了一下sql select * from user where em

原创 redis事物transaction

MULTI 用於標記事務塊的開始。Redis會將後續的命令逐個放入隊列中,然後才能使用EXEC命令原子化地執行這個命令序列。 這個命令的運行格式如下所示: MULTI這個命令的返回值是一個簡單的字符串,總是OK。 EXEC 在一

原创 ClosureTable實現高效無限分類

ClosureTable直譯過來叫閉包表?不過不重要,ClosureTable以一張表存儲節點之間的關係、其中包含了任何兩個有關係(上下級)節點的關聯信息 ClosureTable演示 定義關係表CategoryTree,其包含3個字段

原创 PHP實現一致性hash

<?php /** * 一致性哈希實現接口 * Interface ConsistentHash */ interface ConsistentHash { //將字符串轉爲hash值 public function

原创 redis geo 地理位置系應用戰案例

專有名詞geographic 地理radius 半徑範圍; 半徑(距離); 用半徑度量的圓形面積 redis GEO實現 redis GEO實現主要包含了以下兩項技術: 1、使用geohash保存地理位置的座標。2、使用有序集

原创 CURL解析超時的解決方案

背景:項目中需要在抓取紛享銷客CRM圖片上傳到OSS,調用OssClient.php時,容易發生解析超時(多重試幾次就ok)。 錯誤提示: [2019-04-08 19:41:01] lumen.DEBUG: 出錯文件:/home/zr

原创 get_headers()請求https報錯解決思路

場景:項目中客戶端上傳文件到OSS後,返回給服務端一個OSS的文件對象名稱。服務端拿到文件對象名稱後,需要通過OSSClient生成一個簽名url,然後提供下載服務。 下載服務中,拿到URL後要去校驗該url是否有效,於是使用get_h

原创 laravel踩坑記:空字符轉null

場景:手頭的項目需要對外提供API服務,需要對請求數據進行簽名校驗。提交接口的數據會有''空字符值存在,laravel的Illuminate\Foundation\Http\Request接收到參數後,會將空字符強制轉換爲NULL,導致簽

原创 秒殺踩坑記:庫存超賣

本案例發生在別人身上,覺得有學習借鑑的意義特轉載過來記錄一下。 PM 說有一個類似於搶購的小需求,我們第一反應就想到是典型的防止庫存超賣場景,於是理所因當地選用了 Redis 方案。只要保證是原子操作,即可防止庫存超賣,自然想到使用 In

原创 DataURL 初探

原理:通過對文件的二進制數據進行base64進行編碼。 優點: 1.可以減少網絡請求。 2.字符串編碼方便傳輸存儲。 缺點: 1.不能在客戶端口進行緩存。(如圖片,只能通過css文件進行背景圖片緩存) 2.渲染時需要base64

原创 Mysql Too many connections解決方案

Too many connections從字面理解,mysql連接數過多。當連接數量過多,且來不及釋放時便會出現此錯誤。 查看mysql當前連接信息,特別要注意sleep休眠狀態的連接。 show full processlist; 查

原创 Linux查看被監聽的端口

lsof -i:端口號 用於查看某一端口的佔用情況,比如查看9501端口使用情況,lsof -i:9501 zrj@zrj:~$ lsof -i:9501 COMMAND PID USER FD TYPE DEVICE

原创 Error Code: 1071. Specified key was too long;

錯誤信息 Error Code: 1071. Specified key was too long; max key length is 767 bytes 表結構 CREATE TABLE yundou_data_system.

原创 composer+psr-4實現自動加載

自動加載 對於庫的自動加載信息,Composer 生成了一個 vendor/autoload.php 文件。你可以簡單的引入這個文件,你會得到一個免費的自動加載支持。 require 'vendor/autoload.php'; 這使得你可