Home >Backend Development >PHP Problem >How to implement php queue
How to implement the queue in php: first create a new file "artisan.php"; then execute the queue through "php artisan"; finally enter the redis client and enter the command "lpush listname a b c d e f g".
Recommended: "PHP Video Tutorial"
The principle of PHP queue implementation (laravel)
Everyone who has used the laravel framework knows that it comes with a queue function. I was confused before that PHP is just a script with a timeout mechanism. Why can we keep executing the queue?
We create a new file queue.php
<?php while(true){ echo 1; sleep(1); }
Then execute php queue.php in the command line
You will find that a 1 is output every second; after waiting for a long time, Hey, it's amazing, why doesn't php time out?
Yes, it will not time out. Why?
Answer: In fact, PHP execution scripts will not time out. The timeouts we see on web pages, such as 504, are caused by Apache. Nginx, the timeout period set in the PHP configuration file is determined. Because the PHP command line execution file does not use the PHP configuration file, it does not timeout by default.
ps -ef | grep php
You will find that there is a php queue process
We have solved the problem of php timeout
Let’s take a look at the principle of the queue
Create a new file artisan. php
<?php $redis = new Redis(); $redis->connect('127.0.0.1',6379); while(1){ $res = $redis->lpop('listname'); if($res){echo $res."\r\n";} sleep(1); }
Then php artisan execution queue
Let’s create a new window, enter the redis client and enter the following command
lpush listname a b c d e f g
You will find that the php artisan queue will continuously execute redis Type out the value I just pushed in
In fact, laravel's queue is based on this principle, but it not only supports redis as a carrier, but can also use other more databases
Someone wants to I asked, my php artisan.php is started. If I close the window, won’t it be useless? No, no, no, Linux can still run in the background.
Just add an & after the command, Or nohup ... $ can be run in the background. Of course, you can also add it to the crontab scheduled task for execution.
nohup php artisan.php &
The above is the detailed content of How to implement php queue. For more information, please follow other related articles on the PHP Chinese website!