摘要:這里創建的對象可以在進程生命周期內使用目的加載框架中的內容定義應用目錄加載基礎文件把接收的信息轉換為可識別的對于超全局數組不會釋放函數輸出打印
Swoole完美支持ThinkPHP5 1、首先要開啟http的server
可以在thinkphp的目錄下創建一個server目錄,里面創建一個HTTPServer的php
2、需要在WorkerStart回調事件做兩件事定義應用目錄:define("APP_PATH", __DIR__ . "/../application/");
加載基礎文件:require __DIR__ . "/../thinkphp/base.php";
3、因為swoole接收get、post參數等和thinkphp中接收不一樣,所以需要轉換為thinkphp可識別,轉換get參數示例如下:注意點: swoole對于超全局數組:$_SERVER、$_GET、$_POST、define定義的常量等不會釋放,所以需要先清空一次
// 先清空 $_GET = []; if (isset($request->get)) { foreach ($request->get as $key => $value) { $_GET[$key] = $value; } }4、thinkphp會把模塊、控制器、方法放到一個變量里去,所以通過pathinfo模式訪問會存在只能訪問第一次的pathinfo這個問題,worker進程里是不會注銷變量的
解決辦法:5、swoole支持thinkphp的http_server示例:
thinkphp/library/think/Request.php
function path 中的if (is_null($this->path)) {}注釋或刪除
function pathinfo中的if (is_null($this->pathinfo)) {}注釋或刪除
注意:只刪除條件,不刪除條件中的內容
// 面向過程寫法 $http = new swoole_http_server("0.0.0.0", 9501); $http->set([ // 開啟靜態資源請求 "enable_static_handler" => true, "document_root" => "/opt/app/live/public/static", "worker_num" => 5, ]); /** * WorkerStart事件在Worker進程/Task進程啟動時發生。這里創建的對象可以在進程生命周期內使用 * 目的:加載thinkphp框架中的內容 */ $http->on("WorkerStart", function (swoole_server $server, $worker_id) { // 定義應用目錄 define("APP_PATH", __DIR__ . "/../application/"); // 加載基礎文件 require __DIR__ . "/../thinkphp/base.php"; }); $http->on("request", function ($request, $response) { // 把swoole接收的信息轉換為thinkphp可識別的 $_SERVER = []; if (isset($request->server)) { foreach ($request->server as $key => $value) { $_SERVER[strtoupper($key)] = $value; } } if (isset($request->header)) { foreach ($request->header as $key => $value) { $_SERVER[strtoupper($key)] = $value; } } // swoole對于超全局數組:$_SERVER、$_GET、$_POST、define不會釋放 $_GET = []; if (isset($request->get)) { foreach ($request->get as $key => $value) { $_GET[$key] = $value; } } $_POST = []; if (isset($request->post)) { foreach ($request->post as $key => $value) { $_POST[$key] = $value; } } // ob函數輸出打印 ob_start(); try { thinkContainer::get("app", [APP_PATH]) ->run() ->send(); $res = ob_get_contents(); ob_end_clean(); } catch (Exception $e) { // todo } $response->end($res); }); $http->start();
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39958.html
摘要:這里創建的對象可以在進程生命周期內使用目的加載框架中的內容定義應用目錄加載基礎文件把接收的信息轉換為可識別的對于超全局數組不會釋放函數輸出打印 Swoole完美支持ThinkPHP5 1、首先要開啟http的server 可以在thinkphp的目錄下創建一個server目錄,里面創建一個HTTPServer的php 2、需要在WorkerStart回調事件做兩件事 定義應用目錄:d...
摘要:安裝框架安裝如果已經安裝了可以跳過本步驟,但是請確定通過命令來確保已經使用了最新版本的使用以下命令可以直接通過官網下載并自動安裝到目錄下如果以上安裝過程極慢的話,可以嘗試用以下方式通過國內鏡像來安裝。 《當 Swoole 遇上 ThinkPHP5》:Hello,World! 本文假設你已經有了 Linux 操作系統的 PHP 環境,強烈推薦使用 Vagrant 來搭建開發環境 安裝 ...
摘要:圖中其他兩個文件和是郵件發送類的核心文件,為了簡化調用,抽取了出來,詳細的用法和參數設置,可以參考的使用說明注意點在此步驟中,我們需要注意幾點是你設置的郵件發送的賬號是否已經開啟并且找對對應的安全協議和端口號。 1、環境說明 阿里云centos7thinkphp5.0.11swoole2.0.8 2、tp實現郵件發送 在項目下建立如下的文件目錄:showImg(https://segm...
閱讀 1953·2021-09-30 09:46
閱讀 1366·2019-08-30 15:43
閱讀 1123·2019-08-29 13:28
閱讀 1922·2019-08-29 11:24
閱讀 1681·2019-08-26 13:22
閱讀 3892·2019-08-26 12:01
閱讀 1816·2019-08-26 11:33
閱讀 3242·2019-08-23 15:34