[Swoole] 结合 Laravel 与 Swoole,更简易的开发与布署!

系统部
• 阅读 477

构想

Swoole 实现了 HTTP Server,也就是说 PHP 的布署不再需要依赖 Nginx 或 Apache 这样的网页伺服器,也不需要靠着 PHP-FPM 或 PHP_mod 才能与 Web Server 沟通。

安装了 Swoole extension 后的 PHP,就像 golang 那般內建高效率的 HTTP Server。

甚至,只要用一个简单的 Dockerfile 就可以实现布署的流程,再也不需要 link nginx 又 link php-fpm,把 Dockerfile 弄得跟蜘蛛网一样复杂。

只要一个 Dockerfile,就能够完成 Web Server 跟应用程式布署,多开心吶。

FROM php:cli
COPY project /var/www/project

CMD ["php", "/var/www/project/index.php"]

结合 Laravel?

说到底,如果用了 Swoole 还得重复造轮子,那这玩意还是沒啥用。

可是如果它能够结合当今最火红的 PHP Web Framework:Laravel,我想一切都不太一样了。

实作

Step 1. 取得 Laravel

先从 github 上 clone 最新版本的 laravel 下来。

Step 2. 修改 index.php

Laravel 的程式进入点位于 public/index.php 我们也只会变更到这个档案

原本的档案(移除注解):

<?php
require __DIR__.'/../bootstrap/autoload.php';

$app = require_once __DIR__.'/../bootstrap/app.php';

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

$response = $kernel->handle(
    $request = Illuminate\Http\Request::capture()
);

$response->send();

$kernel->terminate($request, $response);

修改过后:

<?php
require dirname(__DIR__).'/bootstrap/autoload.php';

// IP 跟 Port 可以自行调整
// 如果要监听全部介面可以用 0.0.0.0
// port 小於 1024 需要 root 权限
$http = new Swoole\Http\Server('127.0.0.1', 9000);

$http->on('request', function (Swoole\Http\Request $request, Swoole\Http\Response $response) {
    /**
     * @var \Illuminate\Foundation\Application $app
     * @var \Illuminate\Contracts\Http\Kernel $kernel
     * @var \Illuminate\Http\Request $laravelRequest
     * @var \Illuminate\Http\Response $laravelResponse
     */
    $app = require dirname(__DIR__).'/bootstrap/app.php';
    $kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

    $laravelResponse = $kernel->handle(
        $laravelRequest = new \Illuminate\Http\Request(
            $request->get ?? [],
            $request->post ?? [],
            [],
            $request->cookie ?? [],
            $request->files ?? [],
            $request->server ?? []
        )
    );

    $kernel->terminate($laravelRequest, $laravelResponse);

    $response->status($laravelResponse->getStatusCode());
    $response->write($laravelResponse->getContent());

    unset(
        $app,
        $kernel,
        $laravelResponse,
        $laravelRequest
    );
});

$http->start();

执行

php public/index.php 即可启动

启动前別忘了要设定好 .env


更多学习内容可以访问【对标大厂】精品PHP架构师教程目录大全,只要你能看完保证薪资上升一个台阶(持续更新)

以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要的可以点击链接获取进阶PHP月薪30k>>>架构师成长路线【视频、面试文档免费获取】

点赞
收藏
评论区
推荐文章
Easter79 Easter79
4年前
swoole1.8.0+版本异步redis安装(本实例为swoole1.8.10版本)详解
Swoole1.8.0版本增加了对异步Redis客户端的支持,基于redis官方提供的hiredis库实现。Swoole提供了\_\_call魔术方法,来映射绝大部分Redis指令(本次安装实例为swoole1.8.10版本)编译安装hiredis(swoole1.8.10版本异步redis支持必须环境条件)使用Redis客户端,需要
Easter79 Easter79
4年前
swoole 安装与简单应用
方法一:PECL安装安装依赖包aptgetinstalllibpcre3libpcre3dev安装swoolepeclinstallswoole修改PHP配置php.ini 加载swoole验证安装与加载:phpm|grepswoole方法二:源码编译安装1.下载
Easter79 Easter79
4年前
swoole 编译安装
https://my.oschina.net/u/3529405/blog/1649381        php安装下载swoole源码进入源码目录输入phpize可能会报错Cannotfindautoconf.Pleasecheckyourautoconfinstallation
Wesley13 Wesley13
4年前
swoole入门教程03
环境说明:系统:Ubuntu14.04(安装教程包括CentOS6.5)PHP版本:PHP5.5.10swoole版本:1.7.7stableGithub地址:https://github.com/LinkedDestiny/swooledoc(https://www.oschina.net/action/GoToLink?ur
Stella981 Stella981
4年前
FastCGI 协议分析与C语言实现实例
考虑让我的webserver增加对PHP的支持,这就要用到php解析器来将客户端请求的php文件解析为静态资源,再由我的webserver将其返回到客户端,phpfpm就可以来帮我们完成这个工作。可是我的webserver如何与phpfpm通信呢?接下来就是本文的主角:FastCGI。FastCGI
Stella981 Stella981
4年前
PHP用swoole实现爬虫(二)
本文大部分代码为伪代码,具体实现:一个简单的swoole服务器(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.com%2Flwl1989%2FswooleFramewor)如何解决worker锁住问题按照epoll模型,master和manager只分配任
Stella981 Stella981
4年前
PHP 使用 Swoole
<p在一般的Server程序中都会有一些耗时的任务,比如:发送邮件、聊天服务器发送广播等。如果我们采用同步阻塞的防水去执行这些任务,那么这肯定会非常的慢。</p<pSwoole的TaskWorker进程池可以用来执行一些异步的任务,而且不会影响接下来的任务,很适合处理以上场景。</p<p那么什么是异步任务呢?</p<p可以从下面
Stella981 Stella981
4年前
PHP写deamon合适吗
国内用php做deamon的多起来了,有名的如swoole,而wokerman则把小广告贴得到处都是。反观国外,高手扎堆的ReactPHP却不温不火。PHP适合写deamon吗?有人会说,写GTK界面都行,写个deamon算啥。PHP的“执行后释放所有资源”的方式在主流语言里是独一无二的,这让它开发web时,没有Java和Ruby里内存泄漏(假释放)的问
Stella981 Stella981
4年前
PHP用Swoole实现爬虫(一)
基本概念网络爬虫网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。swoolePHP的异步、并行、高性能网络通信引擎,使用纯C语言编写,提供了PHP语
Easter79 Easter79
4年前
Swoole2.0内置协程并发测试
Swoole2.0是一个革命性的版本,它内置了协程的支持。与Go语言协程不同,Swoole协程完全不需要开发者添加任何额外的关键词,直接以过去最传统的同步阻塞模式编写代码,底层自动进行协程调度实现异步IO。使并发编程变得非常简单。最新的版本中,内置协程已支持PHP7,同时兼具了性能和并发能力,Swoole的强大超乎想象。本文基于Github最新的Sw
dkll dkll
4个月前
2025年婚恋源码小程序开发新趋势:PHP后端+UniApp前端源码搭建用户认证、匹配、聊天系统
一、技术架构:PHPUniApp的黄金组合1.PHP后端:稳定高效的核心支撑PHP作为成熟的后端语言,在婚恋小程序开发中展现出三大优势:高并发处理能力:通过ThinkPHP6框架结合Redis缓存,可支撑万人级在线用户同时互动。例如,采用Swoole扩展