- 上一頁
- 下一頁
-
福建省福彩25选5走势图:實現后臺進程和后臺任務?
后臺進程?
應用可以通過應用代碼根目錄下的
Procfile
文件指定運行的后臺進程。Procfile
文件每一行聲明一條需要運行的后臺進程,格式如下:name: command
name 為后臺進程名, command 為啟動后臺進程的命令。
下面是一個 Python 應用啟動一個后臺任務進程的配置信息:
worker: python vendor/rq/cli.py worker
或者當使用 PHP 時:
worker: php daemon.php
在代碼提交后,你可以在『應用/后臺進程』頁面看到所有后臺進程的運行狀態,進程剛創建時默認只會運行一個實例,你可以根據需要來增加實例數。
使用PHP-Resque實現后臺任務?
php-resque 是一個基于 Redis 的隊列庫,是 resque 項目的 PHP Fork 版本。
安裝?
使用 php-resque 之前,需要先安裝,可以使用 composer 進行。如果當前系統中沒有 composer,可以參考 使用 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 { public function perform() { // Work work work echo $this->args['name']; } }
創建后臺工作進程?
創建一個
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 隊列中取出任務并執行。
部署25选5超级大底
將上面的代碼提交入代碼倉庫并 push 到服務端,ta-dah! 完成。你可以在『應用/后臺進程』頁面來重啟或者調整進程數目。如果進程啟動有問題,你可以在 HTTP 錯誤日志里看到后臺進程的詳細錯誤日志來解決問題。