


PHP does not rely on the system automatic execution mechanism, the php system automatic mechanism_PHP tutorial
Jul 12, 2016 am 08:53 AMPHP does not rely on the system's automatic execution mechanism. The PHP system's automatic mechanism
does not rely on the system and does not rely on the Yii transaction mechanism. Human triggering is considered. The trigger can be written on the overall public page, but considering the pressure on the database and WWW server, and the delay problem of the program, some optimization of the execution function is required.
First of all, we consider the pressure on the database. Every time we click on the page, we let it trigger the monitoring system. The monitoring system must first determine whether our task queue needs to be updated at this time (I have stored the task queue in the cache file ), if there is no need to update, you only need to sort the execution queues in the cache file by time, and execute the queues that have timed out. But we need to consider when to update the queue file and how to update it, so as to reduce the pressure on the system.
My idea is, first of all, the cache file may be manually deleted or expired over time, so first check whether the cache file exists each time (generate caches separately by task/user/type), if not, re-query the database , generate cache files (those that have timed out are executed directly, and those that are unsuccessful are thrown into the cache queue).
The next step is for each access. If there is a cache file, first process the timeout task in the file, and then update the cache file. At this time, we encounter a problem, which is the impact on the cache queue during operation. We may need to insert the queue to be executed at the beginning or somewhere in the middle of the cache queue. In this case, we can manually delete the existing queue. The next time it is triggered, because the cache file cannot be found, the latest cache queue will be regenerated.
When we finish executing a task, the entry in the queue will be deleted. If the queue is empty, the query will be re-queried and the queue will be generated, thus ensuring the minimum number of accesses to the database. There is another problem, such as the monitoring of automatic confirmation of receipt of orders. If it is an update to the user's front desk, it is necessary to delete the cache of this user and the cache of the back-end administrator to which the user belongs, so as to ensure that relevant personnel are browsing the order. , all you see is the latest status. In the same way, the backend administrator's modification order should also delete the cache queue of all relevant personnel.

Hot AI Tools

Undress AI Tool
Undress images for free

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

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

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

std::chrono is used in C to process time, including obtaining the current time, measuring execution time, operation time point and duration, and formatting analysis time. 1. Use std::chrono::system_clock::now() to obtain the current time, which can be converted into a readable string, but the system clock may not be monotonous; 2. Use std::chrono::steady_clock to measure the execution time to ensure monotony, and convert it into milliseconds, seconds and other units through duration_cast; 3. Time point (time_point) and duration (duration) can be interoperable, but attention should be paid to unit compatibility and clock epoch (epoch)

ToaccessenvironmentvariablesinPHP,usegetenv()orthe$_ENVsuperglobal.1.getenv('VAR_NAME')retrievesaspecificvariable.2.$_ENV['VAR_NAME']accessesvariablesifvariables_orderinphp.iniincludes"E".SetvariablesviaCLIwithVAR=valuephpscript.php,inApach

PHPhasthreecommentstyles://,#forsingle-lineand/.../formulti-line.Usecommentstoexplainwhycodeexists,notwhatitdoes.MarkTODO/FIXMEitemsanddisablecodetemporarilyduringdebugging.Avoidover-commentingsimplelogic.Writeconcise,grammaticallycorrectcommentsandu

Reasons and solutions for the header function jump failure: 1. There is output before the header, and all pre-outputs need to be checked and removed or ob_start() buffer is used; 2. The failure to add exit causes subsequent code interference, and exit or die should be added immediately after the jump; 3. The path error should be used to ensure correctness by using absolute paths or dynamic splicing; 4. Server configuration or cache interference can be tried to clear the cache or replace the environment test.

The method of using preprocessing statements to obtain database query results in PHP varies from extension. 1. When using mysqli, you can obtain the associative array through get_result() and fetch_assoc(), which is suitable for modern environments; 2. You can also use bind_result() to bind variables, which is suitable for situations where there are few fields and fixed structures, and it is good compatibility but there are many fields when there are many fields; 3. When using PDO, you can obtain the associative array through fetch (PDO::FETCH_ASSOC), or use fetchAll() to obtain all data at once, so the interface is unified and the error handling is clearer; in addition, you need to pay attention to parameter type matching, execution of execute(), timely release of resources and enable error reports.

In PHP, you can use a variety of methods to determine whether a string starts with a specific string: 1. Use strncmp() to compare the first n characters. If 0 is returned, the beginning matches and is not case sensitive; 2. Use strpos() to check whether the substring position is 0, which is case sensitive. Stripos() can be used instead to achieve case insensitive; 3. You can encapsulate the startsWith() or str_starts_with() function to improve reusability; in addition, it is necessary to note that empty strings return true by default, encoding compatibility and performance differences, strncmp() is usually more efficient.

There are three key ways to avoid the "undefinedindex" error: First, use isset() to check whether the array key exists and ensure that the value is not null, which is suitable for most common scenarios; second, use array_key_exists() to only determine whether the key exists, which is suitable for situations where the key does not exist and the value is null; finally, use the empty merge operator?? (PHP7) to concisely set the default value, which is recommended for modern PHP projects, and pay attention to the spelling of form field names, use extract() carefully, and check the array is not empty before traversing to further avoid risks.

When using PHP preprocessing statements to execute queries with IN clauses, 1. Dynamically generate placeholders according to the length of the array; 2. When using PDO, you can directly pass in the array, and use array_values to ensure continuous indexes; 3. When using mysqli, you need to construct type strings and bind parameters, pay attention to the way of expanding the array and version compatibility; 4. Avoid splicing SQL, processing empty arrays, and ensuring data types match. The specific method is: first use implode and array_fill to generate placeholders, and then bind parameters according to the extended characteristics to safely execute IN queries.
