環境:
centos linux release 7.7.1908 (core)
php 7.3.11
uuid extention 1.0.4
感覺上php對uuid的支援似乎不是很上心,pecl中的uuid擴充套件僅僅是對libuuid的打包,並沒有像其他語言那樣直接提供完整的uuid實現。由於libuuid僅僅提供了版本1和版本4的uuid,所以……,開心一點,這兩個就夠用了。
uuid_create( [int $uuid_type = uuid_type_default] ) : string
$uuid_type
如下常量之一:
uuid_type_default //
0uuid_type_time //
1uuid_type_dce //
4uuid_type_name //
1uuid_type_random //
4libuuid提供了uuid版本1和版本4的實現,也只定義了 uuid_type_dce_time 和 uuid_type_dce_random 兩個常量。php的uuid擴充套件中,常量是通過對映libuuid的常量定義的。所以,雖然擴充套件中根據uuid標準定義了4個常量名,但對於當前版本的libuuid,也只能對映到兩個常量。 uuid_type_time 對映為libuuid的常量 uuid_type_dce_time ,對應uuid版本1的實現; uuid_type_random 對映為libuuid的常量 uuid_type_dce_random ,對應uuid版本4的實現。而 uuid_type_dce 和 uuid_type_name 兩個常量,雖然從常量名上很容易看出是對應著uuid的版本2和版本3、5,但目前也只能對映為libuuid的常量 uuid_type_dce_random 和 uuid_type_dce_time ,可以使用但不具有實際意義。
常量 uuid_type_default 為預設值,表示了libuuid的預設選擇。預設情況下,如果系統存在高質量的隨機數(比如/dev/urandom或/dev/random可用),則提供版本4的uuid,否則提供版本1的uuid。一般認為版本1的uuid發生重複的概率更小,近乎可以保證真正的唯一性,但考慮到洩露mac帶來的安全憂慮,大多數時候還是傾向於採用版本4的uuid。
return
如果引數有效(0、1或4),返回uuid字串。
如果引數不能識別,丟擲警告資訊並返回預設的uuid字串。
uuid_is_valid( string$uuid ) : bool
$uuid
待測試的uuid字串。
return
返回true或false。$uuid對大小寫不敏感。
uuid_compare(string$uuid1, string
$uuid2) : int
$uuid1
, $uuid2
待比較的uuid字串。
returen
如果 $uuid1
或 $uuid2
不是有效的uuid字串,返回bool值 false
。如果 $uuid1
和 $uui2
不相同: $uuid1
< $uuid2
,則返回乙個正整數; $uuid1 > $uuid2
,則返回乙個負整數。
如果 $uuid1 = $uuid2
,返回整型值0。
uuid_is_null(string$uuid) : bool
$uuid
待測試的uuid字串。
return
如果 $uuid
不是有效的uuid字串,返回 false
。如果 $uuid
不是null uuid字串,返回 false
。如果 $uuid
是null uuid字串,返回 true
。null uuid
'00000000-0000-0000-0000-000000000000'這個各位均為0的uuid字串被稱為null uuid(或nil uuid?)。
uuid_type(string$uuid) : int
$uuid
待測試的uuid字串。
return
如果 $uuid
不是有效的uuid字串,返回bool值 false
。如果 $uuid
是null uuid,返回整型值-1。
如果 $uuid
是有效的uuid字串,返回1,2,3,4或5,對應uuid的版本。
uuid_variant(string$uuid) : int
$uuid
待測試的uuid字串。
return
如果 $uuid
不是有效的uuid字串,返回bool型別值 false
。如果 $uuid
是null uuid,返回整型值-1。
如果 $uuid
是有效的uuid字串,返回整型值0,1,2或3。
根據libuuid定義的常量名,很容易分辨返回值的含義:
uuid_variant_ncs //0
uuid_variant_dce //1
uuid_variant_microsoft //2
uuid_variant_other //3
uuid_time(string$uuid) : int
$uuid
待解析的uuid字串。
return
如果 $uuid
不是有效的uuid字串,如果 $uuid
不是rfc4122定義的變體(uuid_variant()返回值為1,在libuuid中預定義的常量為 uuid_variant_dce ),如果 $uuid
不是版本1的uuid(基於時間的uuid),則返回bool值 false
。如果 $uuid
是根據rfc4122定義的版本1構造的uuid,返回乙個整型值。這個值就是構造uuid字串的時候使用的unix時間戳。
uuid_mac(string$uuid) : string
$uuid
待解析的uuid字串。
return
如果 $uuid
不是有效的uuid字串,如果 $uuid
不是rfc4122定義的變體(uuid_variant()返回值為1,在libuuid中預定義的常量為 uuid_variant_dce ),如果 $uuid
不是版本1的uuid(基於時間的uuid),則返回bool值 false
。如果構造 $uuid
的時候使用的不是有效的mac位址,則返回bool值 false
。如果 $uuid
是根據rfc4122定義的版本1構造的uuid,並且構造 $uuid
時使用的是有效的mac位址,則返回這個mac位址,表示為乙個12位的16進製制字串。
uuid_parse(string$uuid) : string
$uuid
待打包的uuid字串。
return
如果 $uuid
不是有效的uuid字串,返回bool值 false
。如果 $uuid
是有效的uuid字串,則去除「-」後打包成乙個16位長的高位在前二進位制字串並返回。類似php中函式pack('l*')的效果。
uuid_unparse(string$uuid) : string
函式uuid_parse()的反向過程。如果引數資料有效,則返回乙個uuid字串,否則返回bool值 false
。ok,就這些。希望有幫助。
參考:
在php中使用Sphinx
要使用php連線sphinx進行全文搜尋,有兩種方式 將sphinx作為php擴充套件安裝,這種方式比較麻煩,此處不介紹 在sphinx原始碼目錄下的有個api sphinxapi.php,將此檔案reqire到你的php中,即可呼叫api方法進行全文搜尋 require sphinxapi.php...
在PHP中使用Curl
摘要 在這篇文章中主要講解php curl庫的知識,並教你如何更好的使用php curl。簡介你可能在你的編寫php指令碼 中會遇到這樣的問 題 怎麼樣才能從其他站點獲取內容呢?這裡有幾個解決方式 最簡單的就是在php中使用fopen 函式,但是fopen函式沒有足夠的引數來使用,比 如當你想構建乙...
PHP中使用hidef擴充套件代替define提高效能
需要新加乙個常量,開啟了本地的config.php檔案,想到了幾年前測試過的hidef以及apc提公升define效能的方案。我的程式中有對開發 測試 生產伺服器分別做了不同的配置,在常量方面則使用了乙個陣列定義了所有需要定義的常量,然後檢測是否有apc load constants函式,沒有的話,...