


PHP generates unique identification code under high concurrency
As the title goes, first of all, thank you to all the experts who responded.
Describe the problem:
<code>学习PHP过程中想通过实践编写一套推广系统。 推广地址:**http://xxxx.com/N4aF35aS7** "N4aF35aS7"作为一个识别码。</code>
The question now is:
<code>PHP有函数以微秒级别获取字符,但是如果考虑到高 并发(具体有多高不讨论,但需要考虑进来)可能会 有重复? 另外,识别码在生成上有规范: 1.长度固定(8位左右,太长地址不友好) 2.组合形式为大写、小写字母,数字(参考百度网盘分享地址) 3.绝对不重复,这点很重要 4.没什么要求了,再谢谢来回答的人。</code>
Reply content:
As the title goes, first of all, thank you to all the experts who responded.
Describe the problem:
<code>学习PHP过程中想通过实践编写一套推广系统。 推广地址:**http://xxxx.com/N4aF35aS7** "N4aF35aS7"作为一个识别码。</code>
The question now is:
<code>PHP有函数以微秒级别获取字符,但是如果考虑到高 并发(具体有多高不讨论,但需要考虑进来)可能会 有重复? 另外,识别码在生成上有规范: 1.长度固定(8位左右,太长地址不友好) 2.组合形式为大写、小写字母,数字(参考百度网盘分享地址) 3.绝对不重复,这点很重要 4.没什么要求了,再谢谢来回答的人。</code>
I will mention a method: preprocessing identifiers
Generate absolutely unique identifiers through the algorithm in advance. You can test it yourself during this process, and because it is pre-processed, there is no need to consider time and algorithm complexity.
Write the generated unique identifier into the database
Only use read operations in high concurrency scenarios
The above mainly solves the problem of fast response under high concurrency, so how to ensure uniqueness?
There are two ideas:
Use queues for reading to ensure that all reads are completed through a unique queue, such as using redis’ pop operation
Use the sql update command. At this time, another field userid is needed. Pseudo code:
update TABLE set userid = $userid where userid = 0 limit 1;
, and then use userid to query the corresponding identifier.
Finally, the point I insist on is: design the code to be as safe as possible from the very beginning. Note that security issues must be considered with high priority. As for what are the “high concurrency” scenarios in real scenarios? I just want to say that if something goes wrong, the programmer will still have to take the blame.
1. Randomly generate new id data for persistence each time, and then check whether the historical data is repeated each time the randomly generated data is generated (but this is definitely a comparison for data persistence every time) Consumption of performance)
2. Accumulate according to rules (such as date and time stamp balabala), so that the generated ones will not be repeated, but you should consider how to avoid repetition in high concurrency.
I would like to ask a question: Are you more worried about generating the same identification code in a concurrent state or are you more worried about generating historical duplicate identification codes?
If you are worried about concurrency, you should consider adding a certain amount of random numbers to the microsecond-level characters you mentioned (each random number can be converted into characters according to ASCII between 48-122), just add a few more Yes, although theoretically there is no absolute non-repetition, the probability should still be very small
If you think about history repeating, then the two things I thought of are the two mentioned at the beginning
Try using the lock mechanism. .
1 +1 every time you write a file
2 Since you are a promotion system, this unique code will be unique as long as you bring your user ID
3 When I see this kind of high concurrency problem, I feel that I am so idle that the entire Internet is going to There are really not many companies that deal with high concurrency, and they use so much high concurrency. It feels like now, frameworks, systems, high concurrency, and caching have become the mantra of programmers.
Generate a corresponding 62-digit string based on the unique ID in the database.
Many articles analyze the rules of short URLs to generate hexadecimal numbers. In theory, the ID will not be repeated and the string will not be generated repeatedly, but the length will change. See if it's acceptable.
There aren’t that many really high-concurrency things, so requiring high-use user IDs is another way.

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHP is suitable for web development, with simple syntax and high execution efficiency. 2. Python is suitable for data science and machine learning, with concise syntax and rich libraries.

PHP is a scripting language widely used on the server side, especially suitable for web development. 1.PHP can embed HTML, process HTTP requests and responses, and supports a variety of databases. 2.PHP is used to generate dynamic web content, process form data, access databases, etc., with strong community support and open source resources. 3. PHP is an interpreted language, and the execution process includes lexical analysis, grammatical analysis, compilation and execution. 4.PHP can be combined with MySQL for advanced applications such as user registration systems. 5. When debugging PHP, you can use functions such as error_reporting() and var_dump(). 6. Optimize PHP code to use caching mechanisms, optimize database queries and use built-in functions. 7

PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.

PHP is widely used in e-commerce, content management systems and API development. 1) E-commerce: used for shopping cart function and payment processing. 2) Content management system: used for dynamic content generation and user management. 3) API development: used for RESTful API development and API security. Through performance optimization and best practices, the efficiency and maintainability of PHP applications are improved.

PHP is still dynamic and still occupies an important position in the field of modern programming. 1) PHP's simplicity and powerful community support make it widely used in web development; 2) Its flexibility and stability make it outstanding in handling web forms, database operations and file processing; 3) PHP is constantly evolving and optimizing, suitable for beginners and experienced developers.

PHP is mainly procedural programming, but also supports object-oriented programming (OOP); Python supports a variety of paradigms, including OOP, functional and procedural programming. PHP is suitable for web development, and Python is suitable for a variety of applications such as data analysis and machine learning.

PHP is suitable for web development, especially in rapid development and processing dynamic content, but is not good at data science and enterprise-level applications. Compared with Python, PHP has more advantages in web development, but is not as good as Python in the field of data science; compared with Java, PHP performs worse in enterprise-level applications, but is more flexible in web development; compared with JavaScript, PHP is more concise in back-end development, but is not as good as JavaScript in front-end development.

PHP and Python have their own advantages and disadvantages, and the choice depends on project needs and personal preferences. 1.PHP is suitable for rapid development and maintenance of large-scale web applications. 2. Python dominates the field of data science and machine learning.
