Cập nhật, tháng 3 năm 2014:
Đầu tiên, điều quan trọng cần lưu ý uniqidlà có một chút nhầm lẫn vì nó không đảm bảo một ID duy nhất.
Theo tài liệu PHP :
CẢNH BÁO!
Hàm này không tạo chuỗi ngẫu nhiên hoặc không thể đoán trước. Chức năng này không được sử dụng cho mục đích bảo mật. Sử dụng hàm / trình tạo ngẫu nhiên an toàn bằng mật mã và các hàm băm an toàn bằng mật mã để tạo ID an toàn không thể đoán trước.
Và
Hàm này không tạo ra các mã thông báo an toàn bằng mật mã, trên thực tế mà không được chuyển bất kỳ tham số bổ sung nào, giá trị trả về sẽ khác một chút so với microtime () . Nếu bạn cần tạo mã thông báo bảo mật bằng mật mã, hãy sử dụng openssl_random_pseudo_bytes () .
Đặt nhiều entropy hơn thành true tạo ra giá trị độc đáo hơn, tuy nhiên thời gian thực thi lâu hơn (mặc dù ở một mức độ nhỏ), theo tài liệu:
Nếu được đặt thành TRUE, uniqid () sẽ thêm entropy bổ sung (sử dụng trình tạo đồng dư tuyến tính kết hợp) vào cuối giá trị trả về, điều này làm tăng khả năng kết quả là duy nhất.
Lưu ý dòng increases the likelihood that the result will be uniquevà không phải là sẽ đảm bảo tính duy nhất.
Bạn có thể 'không ngừng' cố gắng cho tính duy nhất, cho đến một thời điểm và nâng cao bằng cách sử dụng bất kỳ số lượng quy trình mã hóa nào, thêm muối và những thứ tương tự- tùy thuộc vào mục đích.
Tôi khuyên bạn nên xem các nhận xét về chủ đề PHP chính, đáng chú ý là:
http://www.php.net/manual/en/ Chức năng.uniqid.php#96898
http://www.php.net/manual/en/ Chức năng.uniqid.php#96549
http://www.php.net/manual/en/ Chức năng.uniqid.php#95001
Những gì tôi khuyên bạn nên tìm ra lý do tại sao bạn cần tính duy nhất, đó là để bảo mật (tức là thêm vào quy trình mã hóa / xáo trộn)? Ngoài ra, như thế nào độc đáo hiện nó cần phải được? Cuối cùng, hãy xem xét tốc độ. Sự phù hợp sẽ thay đổi với những cân nhắc cơ bản.
uniqidvớimore_entropyset chỉ cung cấp khoảng 92 bit entropy (23 hexbit). Để hiểu tại sao điều đó không tốt cho tính độc đáo, xem The Birthday Vấn đề ...