您好,登錄后才能下訂單哦!
今天小編給大家分享一下php不重復唯一值如何實現的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
php實現不重復唯一值的方法:1、可以使用“uniqid()”函數生成不重復的唯一標識符;2、可以使用“session_create_id()”函數生成唯一標識符;3、可以使用“session_create_id()”函數生成唯一標識符。
php不重復唯一值怎么實現?
PHP 生成不重復唯一標識 session_create_id()
PHP uniqid()函數可用于生成不重復的唯一標識符,該函數基于微秒級當前時間戳。在高并發或者間隔時長極短(如循環代碼)的情況下,會出現大量重復數據。即使使用了第二個參數,也會重復。
使用session_create_id()函數生成唯一標識符,經過實際測試發現,即使循環調用session_create_id()一億次,都沒有出現過重復。
php session_create_id()是php 7.1新增的函數,用來生成session id,低版本無法使用。
PHP uniqid()函數可用于生成不重復的唯一標識符,該函數基于微秒級當前時間戳。在高并發或者間隔時長極短(如循環代碼)的情況下,會出現大量重復數據。即使使用了第二個參數,也會重復。
使用session_create_id()函數生成唯一標識符,經過實際測試發現,即使循環調用session_create_id()一億次,都沒有出現過重復。
php session_create_id()是php 7.1新增的函數,用來生成session id,低版本無法使用。
<?php /** * PHP生成唯一RequestID類 * Version: 1.0 */ class RequestID{ // class start /** * 生成唯一請求id * session_create_id 需要php7.1以上版本 * @return String */ public static function generateV7(){ // 使用session_create_id()方法創建前綴 $prefix = session_create_id(date('YmdHis')); // 使用uniqid()方法創建唯一id $request_id = strtoupper(md5(uniqid($prefix, true))); // 格式化請求id return self::format($request_id); } public static function generate(){ // 創建前綴 $prefix = self::create_guid(date('YmdHis')); // 使用uniqid()方法創建唯一id $request_id = strtoupper(md5(uniqid($prefix, true))); // 格式化請求id return self::format($request_id); } public static function create_guid($namespace = '') { static $guid = ''; $uid = uniqid("", true); $data = $namespace; $data .= $_SERVER['REQUEST_TIME']; $data .= $_SERVER['HTTP_USER_AGENT']; $data .= isset($_SERVER['LOCAL_ADDR'])?$_SERVER['LOCAL_ADDR']:$_SERVER['SERVER_ADDR']; $data .= isset($_SERVER['LOCAL_PORT'])?$_SERVER['LOCAL_PORT']:$_SERVER['SERVER_PORT']; $data .= $_SERVER['REMOTE_ADDR']; $data .= $_SERVER['REMOTE_PORT']; $hash = strtoupper(hash('ripemd128', $uid . $guid . md5($data))); $guid = '{' . substr($hash, 0, 8) . '-' . substr($hash, 8, 4) . '-' . substr($hash, 12, 4) . '-' . substr($hash, 16, 4) . '-' . substr($hash, 20, 12) . '}'; return $guid; } /** * 格式化請求id * @param String $request_id 請求id * @param Array $format 格式 * @return String */ private static function format($request_id, $format='8,4,4,4,12'){ $tmp = array(); $offset = 0; $cut = explode(',', $format); // 根據設定格式化 if($cut){ foreach($cut as $v){ $tmp[] = substr($request_id, $offset, $v); $offset += $v; } } // 加入剩余部分 if($offset<strlen($request_id)){ $tmp[] = substr($request_id, $offset); } return implode('-', $tmp); } } // class end // 生成10個請求id for($i=0; $i<10; $i++){ echo RequestID::generate().PHP_EOL.'<br>'; }
php的框架:
1、Laravel,Laravel是一款免費并且開源的PHP應用框架。
2、Phalcon,Phalcon是運行速度最快的一個PHP框架。
3、Symfony,Symfony是一款為Web項目準備的PHP框架。
4、Yii,Yii是一款快速、安全和專業的PHP框架。
5、CodeIgniter,CodeIgniter是一款非常敏捷的開源PHP框架。
6、CakePHP,CakePHP是一款老牌的PHP框架。
7、Kohana,Kohana是一款敏捷但是功能強大的PHP框架。
以上就是“php不重復唯一值如何實現”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。