首頁 後端開發 PHP問題 php 佇列的實作方法

php 佇列的實作方法

Nov 10, 2020 am 09:58 AM
php

php實作佇列的方法:先新建一個檔案「artisan.php」;然後透過「php artisan」執行佇列;最後進入redis客戶端輸入指令「lpush listname a b c d e f g」即可。

php 佇列的實作方法

推薦:《PHP影片教學

PHP實作佇列的原理(laravel)

用過laravel框架的童鞋都知道其自帶隊列功能,之前我很費解,PHP只是一個腳本,有超時機制。為什麼能不停的去執行隊列呢?

我們新建一個檔案queue.php

<?php
while(true){
  echo 1;
  sleep(1);    
}
登入後複製

然後中命令列裡面執行php queue.php

你會發現每秒鐘輸出一個1;等了很久,咦,很神奇,為什麼php沒有超時呢?

對,就是不會超時,Why?

答:實際上PHP執行腳本是不會超時的,我們在網頁中看到的諸如504等超時,是由Apache, Nginx,PHP設定檔設定的逾時時間決定的,因為PHP命令列執行檔沒有使用PHP設定文件,所以預設是不逾時的。

ps -ef | grep php
登入後複製

會發現有一個php queue進程

php逾時的疑惑我們解決了

再來看一下隊列的原理

新一個檔案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);
}
登入後複製

然後php artisan 執行佇列

我們來新建一個窗口,進入redis客戶端輸入以下指令

lpush listname a b c d e f g
登入後複製

會發現php artisan這個佇列會不斷的把redis裡我剛剛push進去的值打出來

其實laravel的隊列就是這個原理,只不過,它不僅支援redis作為載體,還可以使用其他更多的資料庫

有人就要問了,我這php artisan.php啟動了,如果我把視窗關了不就沒用了嗎?不不不,Linux 還是可以在後台運行的

只要在命令後面加個&,或nohup ... $ 放到後台運行即可,當然也可以加入crontab定時任務裡去執行。

nohup php artisan.php &
登入後複製

以上是php 佇列的實作方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南

CakePHP 日期和時間 CakePHP 日期和時間 Sep 10, 2024 pm 05:27 PM

CakePHP 日期和時間

CakePHP 檔案上傳 CakePHP 檔案上傳 Sep 10, 2024 pm 05:27 PM

CakePHP 檔案上傳

CakePHP 路由 CakePHP 路由 Sep 10, 2024 pm 05:25 PM

CakePHP 路由

CakePHP 專案配置 CakePHP 專案配置 Sep 10, 2024 pm 05:25 PM

CakePHP 專案配置

討論 CakePHP 討論 CakePHP Sep 10, 2024 pm 05:28 PM

討論 CakePHP

CakePHP 快速指南 CakePHP 快速指南 Sep 10, 2024 pm 05:27 PM

CakePHP 快速指南

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發

See all articles