Home >Backend Development >PHP Problem >How to implement php queue

How to implement php queue

藏色散人
藏色散人Original
2020-11-10 09:58:432748browse

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".

How to implement php queue

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(&#39;127.0.0.1&#39;,6379);
while(1){
        $res = $redis->lpop(&#39;listname&#39;);
        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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn