Hướng dẫn what is uuid in php? - uuid trong php là gì?

PHP là một trong những ngôn ngữ lập trình phổ biến hơn trên thế giới.

Được phát hành lần đầu tiên vào năm 1995 như một cách để xây dựng các ứng dụng web động, PHP là ngôn ngữ kịch bản được đánh máy động với sự tương đồng với Perl và C. Mặc dù được coi là ngôn ngữ lập trình mục đích chung, PHP chủ yếu được sử dụng để xây dựng các trang web.

Cách tạo UUID trong PHP

PHP không có hỗ trợ tích hợp để tạo UUID tuân thủ RFC 4122. Hàm, uniqid(), không phải là một sự thay thế đầy đủ để tạo UUID tuân thủ RFC 4122 vì nó có thể không phải lúc nào cũng tạo ra một giá trị duy nhất (đặc biệt là nếu máy tính của bạn nhanh) và nó chỉ có thể tạo ra tối đa 23 ký tự.not have built-in support for generating RFC 4122 compliant UUIDs. The function, uniqid(), is not a sufficient replacement for generating RFC 4122 compliant UUIDs as it may not always generate a unique value (especially if your computer is fast) and it can only generate a maximum of 23 characters.

Tuy nhiên, bên dưới bạn sẽ tìm thấy hai giải pháp của bên thứ 3 khả thi để tạo UUID tuân thủ RFC 4122 trong PHP.

1. Chức năng tạo UUID của bạn trong PHP

Hàm trợ giúp nhỏ này tạo ra UUID Phiên bản 4 tuân thủ RFC 4122.

function guidv4($data = null) {

// Generate 16 bytes (128 bits) of random data or use the data passed into the function.

$data = $data ?? random_bytes(16);

assert(strlen($data) == 16);

// Set version to 0100

$data[6] = chr(ord($data[6]) & 0x0f | 0x40);

// Set bits 6-7 to 10

$data[8] = chr(ord($data[8]) & 0x3f | 0x80);

// Output the 36 character UUID.

return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));

}

Ghi chú

  • Hàm này yêu cầu Php 7 trở lên vì sử dụng chức năng Random_Bytes trên dòng #3.
  • Nếu bạn đang sử dụng Php 5 hoặc sớm hơn và cài đặt tiện ích mở rộng OpenSSL, bạn có thể sử dụng openssl_random_pseudo_bytes(16), thay vì random_bytes(16) trên dòng số 3.
  • Tín dụng đi đến câu trả lời này trên StackOverflow cho giải pháp này.
  • Một ví dụ sử dụng chức năng này sẽ trông như thế này:

    $myuuid = guidv4();

    echo $myuuid;

2. Sử dụng thư viện PHP ramsey/uuid

Nếu bạn đang sử dụng Trình soạn thảo để quản lý các phụ thuộc trong dự án PHP của mình, bạn có thể sử dụng thư viện PHP ramsey/uuid để tạo UUID.

Để bắt đầu với thư viện, bạn có thể cài đặt và thêm nó vào dự án của mình như thế này:

% composer require ramsey/uuid

Bây giờ bạn có thể sử dụng nó trong dự án PHP của bạn. Dưới đây là một ví dụ nhỏ về việc tạo UUID với thư viện này:

use Ramsey/Uuid/Uuid;

$myuuid = Uuid::uuid4();

printf("Your UUID is: %s", $myuuid->toString());


chúng tôi có thể làm thế nào để cải thiện trang này? Hãy cho chúng tôi biết!



Vì vậy, tôi đã thực hiện một số đào xung quanh và tôi đã cố gắng ghép lại một hàm tạo ra UUID V4 hợp lệ trong PHP. Đây là lần gần nhất tôi có thể đến. Kiến thức của tôi về hex, thập phân, nhị phân, các nhà khai thác bitwise của PHP và những thứ tương tự gần như không tồn tại. Hàm này tạo ra một UUID V4 hợp lệ cho đến một khu vực. Một UUID V4 nên ở dạng:

xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx4xxx-yxxx-xxxxxxxxxxxx

Trong đó y là 8, 9, A hoặc B. Đây là nơi các chức năng thất bại vì nó không tuân thủ điều đó.y is 8, 9, A, or B. This is where the functions fails as it doesn't adhere to that.

Tôi đã hy vọng ai đó có nhiều kiến ​​thức hơn tôi trong lĩnh vực này có thể giúp tôi một tay và giúp tôi sửa chữa chức năng này để nó tuân thủ quy tắc đó.

Chức năng như sau:

<?php

function gen_uuid() {
 $uuid = array(
  'time_low'  => 0,
  'time_mid'  => 0,
  'time_hi'  => 0,
  'clock_seq_hi' => 0,
  'clock_seq_low' => 0,
  'node'   => array()
 );
 
 $uuid['time_low'] = mt_rand(0, 0xffff) + (mt_rand(0, 0xffff) << 16);
 $uuid['time_mid'] = mt_rand(0, 0xffff);
 $uuid['time_hi'] = (4 << 12) | (mt_rand(0, 0x1000));
 $uuid['clock_seq_hi'] = (1 << 7) | (mt_rand(0, 128));
 $uuid['clock_seq_low'] = mt_rand(0, 255);
 
 for ($i = 0; $i < 6; $i++) {
  $uuid['node'][$i] = mt_rand(0, 255);
 }
 
 $uuid = sprintf('%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x',
  $uuid['time_low'],
  $uuid['time_mid'],
  $uuid['time_hi'],
  $uuid['clock_seq_hi'],
  $uuid['clock_seq_low'],
  $uuid['node'][0],
  $uuid['node'][1],
  $uuid['node'][2],
  $uuid['node'][3],
  $uuid['node'][4],
  $uuid['node'][5]
 );
 
 return $uuid;
}

?>

UUID được sử dụng để làm gì?

UUID thường được sử dụng để xác định thông tin cần phải là duy nhất trong một hệ thống hoặc mạng của chúng. Tính độc đáo và xác suất thấp của họ trong việc lặp đi lặp lại làm cho chúng hữu ích cho việc là khóa liên kết trong cơ sở dữ liệu và số nhận dạng cho phần cứng vật lý trong một tổ chức.identifying information that needs to be unique within a system or network thereof. Their uniqueness and low probability in being repeated makes them useful for being associative keys in databases and identifiers for physical hardware within an organization.

Ví dụ UUID là gì?

Định dạng.Trong biểu diễn văn bản chính tắc của nó, 16 octet của một UUID được biểu diễn dưới dạng 32 chữ số thập lục phân (cơ sở-16), được hiển thị thành năm nhóm được phân tách bằng dấu gạch nối, ở dạng 8-4-4-4-12(32 ký tự thập lục phân và 4 dấu gạch nối).Ví dụ: 123E4567-E89B-12D3-A456-426614174000.123e4567-e89b-12d3-a456-426614174000.

Uuid Laravel là gì?

Laravel UUID còn được gọi là định danh duy nhất, có giá trị 128 bit và được sử dụng để xác định các bản ghi của bảng.UUID về cơ bản được sử dụng thay vì ID tăng tự động;UUID được thể hiện dưới dạng chuỗi thập lục phân được tách thành năm nhóm và được chia bằng dấu gạch nối.universally unique identifier, which was 128 bits value and used to identify the records of the table. UUID is basically used instead of auto-increment ID; UUID is represented as a hexadecimal string which was separated into five groups and splitted by hyphens.

UUID luôn là duy nhất?

Tạo ra rằng nhiều UUID, với tốc độ một phần mỗi giây, sẽ mất một tỷ năm.Vì vậy, trong khi UUID không thực sự độc đáo, nhưng chúng đủ duy nhất cho các mục đích thực tế, có tính đến những hạn chế tự nhiên của tuổi thọ của con người và tách hệ thống.UUIDs are not truly unique, they are unique enough for practical purposes, taking into account the natural limitations of human lifespans and separation of systems.