我們新建一個文件queue.php
<?php while(true){ echo 1; sleep(1); }
然后中 命令行里面 執行 php queue
你會發現每秒鍾輸出一個1;等了很久,咦,很神奇,為什么php沒有超時呢?
對,就是不會超時,Why?
答:實際上PHP執行腳本是不會超時的,我們在網頁中看到的諸如504等超時,是由Apache,Nginx,PHP配置文件設置的超時時間決定的,因為PHP命令行執行文件沒有使用PHP配置文件,所以默認是不超時的
接下來我們演示redis+php實現隊列
新建一個文件 artisan.php
<?php $redis = new Redis(); $redis->connect('127.0.0.1',6379);
$redis->auth('123456');//因為此處我設置了redis密碼 while(1){ $res = $redis->lpop('listname'); if($res){echo $res."\r\n";} sleep(1); }
然后php artisan.php 執行隊列
我們來新建一個窗口,進入redis客戶端輸入以下命令【不會redis的可以在我的博客中找相關資料】
lpush listname a b c d e f g
會發現php artisan這個隊列會不斷的把redis里我剛剛push進去的值打出來
其實laravel的隊列就是這個原理,只不過,它不僅支持redis作為載體,還可以使用其他更多的數據庫
有人就要問了,我這php artisa.php啟動了,如果我把窗口關了不就沒用了嗎,
不不不,Linux 還是可以在后台運行的
只要在命令后面加個 &
php artisan &
就可以啦