新浪雲 使用 PHP Resque 實現後台任務

2021-07-14 16:49:34 字數 1762 閱讀 9132

php-resque 是乙個基於 redis 的佇列庫,是 resque 專案的 php fork 版本。

使用 php-resque 之前,需要先安裝,可以使用 composer 進行。

$ composer require sinacloud/php-resque:dev-master

loading composer repositories with package information

updating dependencies (including require-dev)

- installing colinmollenhour/credis (1.7)

loading from cache

- installing psr/log (1.0.0)

loading from cache

- installing chrisboulton/php-resque (dev-master 73b62e3)

cloning 73b62e364a89230d041abd2ba767bcec6fa15927

writing lock file

generating autoload files

將 vendor 目錄和應用**一起提交入**倉庫,即可在服務端的**裡使用 php-resque 了。

建立乙個 job.php

檔案,這個檔案裡定義需要執行的任務。

<?php

class

my_job

}

建立乙個 worker.php

檔案,這個模組會監聽 redis 佇列並處理任務。

<?php

date_default_timezone_set

('asia/shanghai'

);$redis

="redis 連線位址"

;require

'job.php'

;putenv

("queue=default"

);putenv

("redis_backend=

$redis");

require

'vendor/bin/resque'

;

在應用**根目錄下建立乙個 procfile

檔案,如下新增乙個新的後台程序。

worker: php worker.php

在 web 應用程式的處理函式中,使用如下**新增任務。

<?php

require

'vendor/autoload.php'

;$redis

="redis 連線位址"

;resque

::setbackend

($redis

);$args

=array

('name'

=>

'chris'

);resque

::enqueue

('default'

,'my_job'

,$args

);

執行完 enqueue 後,任務就會被新增到 redis 佇列中去非同步執行,後台程序會不停的從 redis 佇列中取出任務並執行。

將上面的**提交入**倉庫並 push 到服務端,ta-dah! 完成。你可以在『應用/後台程序』頁面來重啟或者調整程序數目。如果程序啟動有問題,你可以在 http 錯誤日誌裡看到後台程序的詳細錯誤日誌來解決問題。

新浪雲PHP(續)

上次寫好簡單的顯示頁面後,又新增了插入 修改 刪除三個基本功能。index.php xmlns lang zh charset utf 8 body table style 書籍一覽title head method post action admin.php 賬號 type text name u...

是新浪移動雲

借助於殼,web應用可以被安裝,可以被發布到各大市場。同樣的,借助於殼和裝置之間的通訊,殼內的web應用可以輕鬆呼叫裝置硬體。目前這類方案中,最知名的是被adobe收購後捐贈給apache的開源專案phonegap,facebook,微軟,wikipedia等公司都使用它來開發自己的移動客戶端。為方...

新浪使用Redis

風起 2009年微博剛剛上線的時候,微博關係服務使用的是最傳統的 memcache mysql 的方案。mysql 按 uid hash 進行了分庫分表,表結構非常簡單 業務方存在兩種查詢 兩種查詢的業務需求與分庫分表的架構設計存在矛盾,最終導致了冗餘儲存 以 fromuid 為hash key存乙...