讓TP5.0在SWOOLE上飛起來


TP-SWOOLE

目前,TP5.1官方已經提供了think-swoole2.0,集成程度以前優雅很多,不過5.0的集成方式確實有些雞肋。所以看了下2.0,為5.0開發了一個擴展包,可以采用composer下載

composer require xaviertony/xavier-swoole

開發之前,需要先熟悉TP5.0的生命周期,不然就無從下手了。

由於TP主要在Apache或者NGINX下運行,每次運行結束都會進行釋放,而swoole則是常住內存,TP5很多類都由單例實現,所以難免會入坑,其中大坑主要是request,由於啟動后請求被實例化,如果不刪除請求勢力,以后每次都是采用這個實例,造成無法正常訪問頁面,因為每次請求達到后需要先將請求實例刪除

public static function deletethis()
    {
        if (!is_null(self::$instance)) {
            self::$instance=null;
        }
    }

第三方包的配置文件必須在application/extra下,文件名為swoole.php

<?php
return [
    'host'                  => '0.0.0.0', // 監聽地址
    'port'                  => 9501, // 監聽端口
    'mode'                  => '', // 運行模式 默認為SWOOLE_PROCESS
    'sock_type'             => '', // sock type 默認為SWOOLE_SOCK_TCP
    'app_path'              => getcwd() . '/application', // 應用地址 如果開啟了 'daemonize'=>true 必須設置(使用絕對路徑)
    'file_monitor'          => false, // 是否開啟PHP文件更改監控(調試模式下自動開啟)
    'file_monitor_interval' => 2, // 文件變化監控檢測時間間隔(秒)
    'file_monitor_path'     => [], // 文件監控目錄 默認監控application和config目錄
    // 可以支持swoole的所有配置參數
    'pid_file'              => getcwd()  . '/runtime/swoole.pid',
    'log_file'              => getcwd()  . '/runtime/swoole.log',
    'task_worker_num'       => 20,
    //'document_root'         => getcwd() . 'public',
    //'enable_static_handler' => true,
    'daemonize'                => 1,//守護
    'worker_num' => 8,    //worker process num
    'max_request' => 10000,
];

啟動命令

``` php think swoole start ```

守護啟動

``` php think swoole start -d ```

停止服務

``` php think swoole stop ```

原文地址:https://segmentfault.com/a/1190000016010434


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM