Swoole 支持ThinkPHP5.1 非think-swoole

Swoole 支持ThinkPHP5.1 非think-swoole

git下來ThinkPHP5.1 然後進行修改

建立server端文件

在項目根目錄中建立 /server/server.php

<?php
/**
 * Created by PhpStorm.
 * User: dom
 * Date: 19-2-23
 * Time: 下午4:10
 */

$http = new swoole_http_server("0.0.0.0", 9906);

$http->set([
    'enable_static_handler' => true, // 開啓靜態資源存在優先訪問
    'document_root' => '/www/swoole_tp5/public/static', // 靜態資源目錄
    'worker_num' => 5,
    'log_level' => SWOOLE_LOG_ERROR, // 日誌等級 關閉開啓debug
    'trace_flags' => SWOOLE_TRACE_SERVER, // 日誌等級 關閉開啓debug
]);

// 增加生命週期 進程啓動時發生
$http->on('WorkerStart', function (swoole_server $server, $workerId) {
    // 加載基礎文件
    require __DIR__ . '/../thinkphp/base.php';
});

$http->on('request', function ($request, $response) use ($http) {
	// 重寫 server
    if (isset($request->server)) {
        foreach ($request->server as $k => $v) {
            $_SERVER[strtoupper($k)] = $v;
        }
    }

	// 重寫 header
    if (isset($request->header)) {
        foreach ($request->header as $k => $v) {
            $_SERVER[strtoupper($k)] = $v;
        }
    }

	// 重寫 get
    $_GET = [];
    if (isset($request->get)) {
        foreach ($request->get as $k => $v) {
            $_GET[$k] = $v;
        }
    }

	// 重寫 post
    $_POST = [];
    if (isset($request->post)) {
        foreach ($request->post as $k => $v) {
            $_POST[$k] = $v;
        }
    }

    ob_start();
    // 執行應用並響應
    try {
        \think\Container::get('app')->run()->send();
    } catch (Exception $e) {

    }

    $res = ob_get_contents();
    ob_end_clean();

    $response->end($res);

});

$http->start();

如果你現在啓動這個服務的話,你會發現以下的問題:
http://127.0.0.1:9907 打開之後 修改訪問地址 如:http://127.0.0.1:9907/aaaa/dddd的變化始終不變

修改ThinkPHP源碼

/thinkphp/library/think/Request.php
修改 public function pathinfo() 這個方法
註釋 if (is_null($this->pathinfo)) {}

修改 public function path() 這個方法
註釋 if (is_null($this->path)) {}

之後用 http://127.0.0.1:9907/?s=index/index 這種形式就可以解決以上問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章