PHP實現URL長連線轉短連線方法

2022-08-14 03:51:15 字數 1760 閱讀 6698

短鏈結,通俗來說,就是將長的url**,通過程式計算等方式,轉換為簡短的**字串。

1、內容需要;2、使用者友好;3、便於管理。實現短**(short url)系統比較流行的演算法有兩種自增序列演算法、 摘要演算法

1、將長**md5生成 32 位簽名串,分為 4 段, 每段 8 個位元組

2、對這四段迴圈處理, 取 8 個位元組, 將他看成 16 進製串與 0x3fffffff(30位1) 與操作, 即超過 30 位的忽略處理

3、這 30 位分成 6 段, 每 5 位的數字作為字母表的索引取得特定字元, 依次進行獲得 6 位字串

4、總的md5串可以獲得 4 個 6 位串,取裡面的任意乙個就可作為這個長 url 的短 url 位址

這種演算法,雖然會生成4個code,但是仍然存在重複機率

依據第二種演算法,url長連線轉短連線實現方法如下:

語言:php5.6

伺服器環境:lnmp

第一步:利用shorturl()函式,生成短連線code碼,並將資料存入mysql資料庫;

<?php  

/**

* 由長連線生成短鏈結操作

* * 每個字元有62種狀態,六個字元就可以表示62^6(56800235584),那麼如何得到這六個字元,

* 具體描述如下:

* 1. 對傳入的長url+設定key值 進行md5,得到乙個32位的字串(32 字元十六進製制數),即16的32次方;

* 2. 將這32位分成四份,每乙份8個字元,將其視作16進製制串與0x3fffffff(30位1)與操作, 即超過30位的忽略處理;

* 3. 這30位分成6段, 每5個一組,算出其整數值,然後對映到我們準備的62個字元中, 依次進行獲得乙個6位的短鏈結位址。

* */

function shorturl( $long_url )

$output[$i] = $out;

} return $output;

}

$url = '';//長連線

$ret = shorturl($url);

var_dump($ret);

################ 列印結果 ################

/* array(4) */

資料庫結構(可自定義):

create table `long_short_url` (

`id` int(32) unsigned not null auto_increment,

`long_url` varchar(255) default null,

`short_url_code` varchar(255) default null,

`create_time` varchar(32) default null,

primary key (`id`)

) engine=innodb auto_increment=387 default charset=utf8;

public

function

longurl()

第三步:修改nginx伺服器nginx.conf配置檔案,在底部(任意位置)增添以下**:

server

PHP實現URL長連線轉短連線方法總結

閱讀目錄 這樣的話其好處為 1 內容需要 2 使用者友好 3 便於管理。實現短 short url 系統比較流行的演算法有兩種自增序列演算法 摘要演算法 回到頂部 自增序列演算法也叫永不重複演算法 設定 id 自增,乙個 10進製 id 對應乙個 62進製的數值,1對1,也就不會出現重複的情況。這個...

長連線 短連線

長連線在web中的運用 如果沒有客戶端大量的訪問,可以採用html5的serversocket長連線 例如hudson 執行時會實時的返回當前執行的結果 vmstat 監控 b 長連線 資料庫連線 短連線 http連線 b b 一 長連線與短連線 b 長連線 client方與server方先建立連線...

長連線 短連線

http協議的長連線和短連線,實質上是tcp協議的長連線和短連線。http屬於應用層協議,在傳輸層使用tcp協議,在網路層使用ip協議。ip協議主要解決網路路由和定址問題,tcp協議主要解決如何在ip層之上可靠的傳遞資料報。http是乙個無狀態的面向連線的協議,無狀態不代表http不能保持tcp連線...