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 這種形式就可以解決以上問題