• 文檔中心
  • 云應用
  • PHP
  • 上一頁
  • 下一頁
  • Table of Contents

    • 實現后臺進程和后臺任務
      • 后臺進程
      • 使用PHP-Resque實現后臺任務
      • 安裝
      • 添加任務描述類
      • 創建后臺工作進程
      • 添加任務
      • 部署

    上一個主題

    運行環境

    下一個主題

    服務列表

    本頁

    顯示源代碼

    快速搜索

    Enter search terms or a module, class or function name.

    福建省福彩25选5走势图:實現后臺進程和后臺任務?

    后臺進程?

    應用可以通過應用代碼根目錄下的 Procfile 文件指定運行的后臺進程。

    Procfile 文件每一行聲明一條需要運行的后臺進程,格式如下:

    name: command
    

    name 為后臺進程名, command 為啟動后臺進程的命令。

    下面是一個 Python 應用啟動一個后臺任務進程的配置信息:

    worker: python vendor/rq/cli.py worker
    

    或者當使用 PHP 時:

    worker: php daemon.php
    

    在代碼提交后,你可以在『應用/后臺進程』頁面看到所有后臺進程的運行狀態,進程剛創建時默認只會運行一個實例,你可以根據需要來增加實例數。

    ../../_images/background-process-management.png

    使用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 錯誤日志里看到后臺進程的詳細錯誤日志來解決問題。