Laravel 集成 Swoole 教程

作為 php 開(kāi)發(fā)工程師,不能僅僅局限于傳統(tǒng)的 nginx+fpm 的模式,學(xué)習(xí) swoole 是一個(gè)必要的過(guò)程,可以對(duì)自身的技術(shù)棧做一個(gè)提升,學(xué)習(xí)過(guò)程中可以理解 swoole 為 php 帶來(lái)了哪些改變,為何越來(lái)越多的人擁抱 swoole,那么這篇教程就簡(jiǎn)單的講解一下如何在 laravel 中引入 swoole。

我的官方群點(diǎn)擊此處。

一. 準(zhǔn)備工作

1. 安裝 Laravel

laravel new laravel-swoole

本人使用?valet?進(jìn)行開(kāi)發(fā),可以使用

laravel-swoole.test

進(jìn)行訪問(wèn)

2. 引入 swoole

具體的 swoole 安裝請(qǐng)移步官網(wǎng)進(jìn)行下載,編譯,安裝,這里不多闡述了。

1. 在項(xiàng)目更目錄創(chuàng)建一個(gè) server 文件夾,然后在該文件夾中創(chuàng)建?http_server.php?文件,具體的文件內(nèi)容如下

<?php

$http = new swoole_http_server('127.0.0.1', 9501);

$http->set([

? ? 'worker_num' => 8,

? ? 'max_request' => 5000,

//? ? 'document_root' => '/Users/apple/Code/Teacher_Project/swoole_live/resources/live/',

//? ? 'enable_static_handler' => true,

]);

//工作進(jìn)程啟動(dòng)

$http->on('WorkerStart', function ($serv, $worker_id) {

? ? //加載index文件的內(nèi)容

? ? require __DIR__ . '/../vendor/autoload.php';

? ? require_once __DIR__ . '/../bootstrap/app.php';

});

//監(jiān)聽(tīng)http請(qǐng)求

$http->on('request', function ($request, $response) {

? ? //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請(qǐng)求

? ? if (isset($request->get)) {

? ? ? ? foreach ($request->get as $k => $v) {

? ? ? ? ? ? $_GET[$k] = $v;

? ? ? ? }

? ? }

? ? //post請(qǐng)求

? ? if (isset($request->post)) {

? ? ? ? foreach ($request->post as $k => $v) {

? ? ? ? ? ? $_POST[$k] = $v;

? ? ? ? }

? ? }

? ? //文件請(qǐng)求

? ? if (isset($request->files)) {

? ? ? ? foreach ($request->files as $k => $v) {

? ? ? ? ? ? $_FILES[$k] = $v;

? ? ? ? }

? ? }

? ? //cookies請(qǐng)求

? ? if (isset($request->cookie)) {

? ? ? ? foreach ($request->cookie as $k => $v) {

? ? ? ? ? ? $_COOKIE[$k] = $v;

? ? ? ? }

? ? }

? ? ob_start();//啟用緩存區(qū)

? ? //加載laravel請(qǐng)求核心模塊

? ? $kernel = app()->make(Illuminate\Contracts\Http\Kernel::class);

? ? $laravelResponse = $kernel->handle(

? ? ? ? $request = Illuminate\Http\Request::capture()

? ? );

? ? $laravelResponse->send();

? ? $kernel->terminate($request, $laravelResponse);

? ? $res = ob_get_contents();//獲取緩存區(qū)的內(nèi)容

? ? ob_end_clean();//清除緩存區(qū)

? ? //輸出緩存區(qū)域的內(nèi)容

? ? $response->end($res);

});

$http->start();

在路由文件加入路由:

Route::get('/test1', 'UsersController@test');

Route::get('/test2','UsersController@test2');

在控制器添加方法:

? ? /**

? ? * 測(cè)試1

? ? * @param Request $request

? ? * @return string

? ? */

? ? public function test(Request $request)

? ? {

? ? ? ? return view('test');#在你的視圖文件夾創(chuàng)建test.blade.php

? ? }

? ? /**

? ? * 測(cè)試2

? ? * @param Request $request

? ? * @return string

? ? */

? ? public function test2(Request $request)

? ? {

? ? ? ? return 'Hello World2:' . $request->get('name');

? ? }

4. 啟動(dòng) swoole

在終端下輸入:

php server/http_server.php

訪問(wèn)瀏覽器:

http://127.0.0.1:9501/test1

http://127.0.0.1:9501/test2?name=Jelly

對(duì)應(yīng)的結(jié)果如下:

訪問(wèn) test1 路由

訪問(wèn) test2 路由

更多學(xué)習(xí)內(nèi)容請(qǐng)?jiān)L問(wèn):

八重櫻:騰訊T3-T4標(biāo)準(zhǔn)精品PHP架構(gòu)師教程目錄大全,只要你看完保證薪資上升一個(gè)臺(tái)階(持續(xù)更新)?zhuanlan.zhihu.com

以上內(nèi)容希望幫助到大家,很多PHPer在進(jìn)階的時(shí)候總會(huì)遇到一些問(wèn)題和瓶頸,業(yè)務(wù)代碼寫(xiě)多了沒(méi)有方向感,不知道該從那里入手去提升,對(duì)此我整理了一些資料,包括但不限于:分布式架構(gòu)、高可擴(kuò)展、高性能、高并發(fā)、服務(wù)器性能調(diào)優(yōu)、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql優(yōu)化、shell腳本、Docker、微服務(wù)、Nginx等多個(gè)知識(shí)點(diǎn)高級(jí)進(jìn)階干貨需要的可以免費(fèi)分享給大家,需要的可以加入我的官方群點(diǎn)擊此處。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • date: 2017-12-14 21:34:51title: swoole 在 swoft 中的應(yīng)用 swoft...
    daydaygo閱讀 4,408評(píng)論 9 12
  • swoole 安裝用的是centOSphp安裝目錄:/usr/local/php php.ini配置文件路徑:/u...
    a十二_4765閱讀 12,081評(píng)論 3 9
  • 因?yàn)楣纠镒錾坛情_(kāi)發(fā)用的是OpenCart,上級(jí)讓我先熟悉這個(gè)系統(tǒng),借此機(jī)會(huì)詳細(xì)解讀一下商品管理這一功能(也是為了...
    山有木兮_卿有意閱讀 1,808評(píng)論 0 2
  • <?php /** * 常用函數(shù)庫(kù) * */ class Core_Fun { /** * 對(duì)變量進(jìn)行反...
    尋夢(mèng)xunm閱讀 626評(píng)論 0 0
  • 18年3月14日從淮安漣水機(jī)場(chǎng)飛往廣州 折騰到晚上九點(diǎn)半才到佛山順德容桂鹿茵酒店 和老公在三和公司會(huì)和。次...
    蕓倩閱讀 367評(píng)論 0 1

友情鏈接更多精彩內(nèi)容