laravel log 对象_swoole运行模式加速laravel应用的详细介绍(life)

本篇文章给大家带来的内容是关于swoole运行模式加速laravel应用的详细介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

我的官方群点击此处。

一、Swoole

Swoole号称重新定义了PHP,它是一个PHP扩展,使得PHP可以使用异步的方式执行,就像node一样,而且还能使用socket,为PHP提供了一系列异步IO、事件驱动、并行数据结构功能。 Swoole4支持完整的协程编程模式,可以使用完全同步的代码实现异步程序。PHP代码无需额外增加任何关键词,底层自动进行协程调度,实现异步IO 。 nodejs能实现的swoole几乎都能实现,而且性能比nodejs更高,毕竟nodejs是单线程的无法充分发挥cpu性能,swoole是多线程的可以充分发挥cpu的性能。 Swoole高效跟传统的web开发有什么区别,除了传统的LAMP/LNMP同步开发模式,swoole的异步开发模式是怎样的,如何保持高效?

二、传统web开发模式 PHP web开发采用的方式是LAMP/LNMP架构,即Linux、Nginx,Mysql和PHP。这里以nginx来举例,大致结构为:

592450b841450e6ea7e666f28a5a7a2c.png

当请求进入时,web server将请求转交给PHP-FPM,PHP-FPM是一个进程池架构的FastCGI服务,内置PHP解释器。FPM负责解释执行PHP文件生成响应,最终返回给web server,展现至前端。PHP文件中实现了许多业务逻辑,包括Mysql和Nosql的访问,调用第三方应用等等。 这样的结构php-fpm和nginx的配合已经运行得足够好,但是由于php-fpm本身是同步阻塞进程模型,在请求结束后释放所有的资源(包括框架初始化创建的一系列对象),导致PHP进程“空转”(创建<-->销毁<-->创建)消耗大量的CPU资源,从而导致单机的吞吐能力有限。

每次请求处理的过程都意味着一次PHP文件解析,环境设置等不必要的耗时操作PHP进程处理完即销毁,无法在PHP程序中使用连接池等技术实现性能优化。

三、Swoole运行模式 针对传统架构的问题,swoole从PHP扩展出发,解决了上述问题,对于swoole的进程模型,我们已经了解过了。

程序猿的生活:【社群福利】30G-PHP进阶资料,助力大家都能30K​zhuanlan.zhihu.com
d905e7f329a6d411c29c5bcb6b36b00e.png

相比于传统架构,Swoole进程模型最大的特点在于其多线程Reactor模式处理网络请求,使得其能轻松应对大量连接。

除此之外的优点还包括:

全异步非阻塞,占用资源开销小,程序执行效率高

程序运行只解析加载一次PHP文件,避免每次请求的重复加载

进程常驻,使得连接池和请求之间信息传递等的实现成为可能

四、为什么要在 Swoole 上运行 Laravel? Laravel框架启动的时候需要加载很多文件,再加上其出了名的生态环境好,所以在开发过程中我们就会发现有非常多的已经造好的轮子,这也就使得Laravel的一次启动的磁盘IO特别高(就是要加载很多文件嘛) laravel生命周期需要在每次请求的时候都执行一遍。因为单个请求创建的环境在请求执行结束后会立即销毁。 换句话说, 在传统的 PHP 生命周期中, 为了脚本执行而浪费了大量的时间去创建和销毁资源。想象一下像 Laravel 这样的框架, 在每次请求中需要加载多少文件? 同时也浪费了大量的 I/O 操作。

因此如果我们利用 Swoole 内置一个应用级别的 Server, 并且所有脚本文件在加载一次之后便可以保存在内存中呢? 这就是为什么我们需要尝试在 Swoole 上运行 Laravel。 Swoole 可以提供强大性能而 Laravel 则可以提供优雅代码结构使用。这俩儿真是完美组合 !

五、使用Swoole提升Laravel的性能 在现有的轮子中,感觉下面这两个还是非常不错的,可以自行选择

  • swooletw/laravel-swoole
  • garveen/laravoole

本人选择了第一个来测试 使用composer安装:

composer require swooletw/laravel-swoole

如果你使用的是laravel,那么在 config/app.php 的 providers 数组中加上

SwooleTWHttpLaravelServiceProvider::class,

如果你使用的是lumen,那么在 bootstrap/app.php 中加入如下代码

$app->register(SwooleTWHttpLumenServiceProvider::class);

将配置文件导出到 config 目录下

php artisan vendor:publish --provider="SwooleTWHttpHttpServiceProvider"

然后可以去 config/swoole_http.php 中配置信息

'server' => ['host' => env('SWOOLE_HTTP_HOST', '0.0.0.0'),//监听任意ip'port' => env('SWOOLE_HTTP_PORT', '1215'),'options' => ['pid_file' => env('SWOOLE_HTTP_PID_FILE', base_path('storage/logs/swoole_http.pid')),'log_file' => env('SWOOLE_HTTP_LOG_FILE', base_path('storage/logs/swoole_http.log')),'daemonize' => env('SWOOLE_HTTP_DAEMONIZE', 1),//1-程序将转入后台作为守护进程运行],],

swoole_http.php 里还提供配置 providers 数组,

'providers' => [// AppProvidersAuthServiceProvider::class,]

因为使用swoole作为http后,这些providers会被存到内存中,所以这里配置的是每次请求都想要重新注册和重新启动的providers。

现在,你可以执行以下的命令来启动 Swoole HTTP 服务。

$ php artisan swoole:http start

然后你可以看到以下信息:

Starting swoole http server...Swoole http server started: <http://0.0.0.0:1215>

现在可以通过访问 http://127.0.0.1:1215 来进入 Laravel 应用。 注意:该拓展是不支持热启动的,所以每次有代码更新都要重启服务 php artisan swoole:http restart

六、性能测试 使用Apache的ab测试工具

ab -n 1000 -c 10 http://127.0.0.1:1215/

参数说明:-n 1000个请求 -c 10个并发数

b8c5427dda4add06508b45fa2b1c8eba.png

f7808ac86dd52d009442691a2f2a632c.png

图一是使用swoole作为应用服务器,图二是apache服务器 测试环境在虚拟机中,电脑配置也较差,性能没有完全发挥出来,可以看到apache只完成197次请求就扛不住压力了,swoole HTTP服务 完成了压测,性功完全碾压apache服务器。

七、使用Nginx代理

swoole在官网也提到过:swoole_http_server对Http协议的支持并不完整,建议仅作为应用服务器。并且在前端增加Nginx作为代理。 那么,我们就增加需要配置nginx.conf里的server:

server {listen 80;server_name your.domain.com;root /path/to/laravel/public;index index.php;location = /index.php {# Ensure that there is no such file named "not_exists"# in your "public" directory.try_files /not_exists @swoole;}location / {try_files $uri $uri/ @swoole;}location @swoole {set $suffix "";if ($uri = /index.php) {set $suffix "/";}proxy_set_header Host $host;proxy_set_header SERVER_PORT $server_port;proxy_set_header REMOTE_ADDR $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# IF https# proxy_set_header HTTPS "on";proxy_pass http://127.0.0.1:1215$suffix;}}

配置可参考swoole方文档官 Nginx/Apache配置 至此,大功告成,你可以像平常一样访问你的网站了。

八、使用swoole和传统php开发的缺点 本文主要介绍了使用swoole作为laravel的应服务器,最后说下使用swoole和传统php开发的缺点。 1、更难上手。这要求开发人员对于多进程的运行模式有更清晰的认识 2、更容易内存泄露。在处理全局变量,静态变量的时候一定要小心,这种不会被GC清理的变量会存在整个生命周期中,如果没有正确的处理,很容易消耗完所有的内存。在php-fpm下,php代码执行完内存就会被完全释放。

以上就是swoole运行模式加速laravel应用的详细介绍的详细内容

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487985.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OVS+DPDK Datapath 包分类技术

本文主体内容译于[DPDK社区文档]&#xff0c;但并没有逐字翻译&#xff0c;在原文的基础上进行了一些调整&#xff0c;增加了对TSS分类器的详细阐述。 1. 概览 本文描述了OVSDPDK中的包分类器(datapath classifier -- aka dpcls)的设计与实现思路。本文的内容主要牵涉到分类器对…

mysql第五章 在线测试_PHP+MySQL来实现在线测试quiz功能

在上一篇文章中&#xff0c;我们介绍了jQuery前端PHP在线测试题效果。这篇文章将结合实例给大家介绍如何使用jQueryPHPMySQL来实现在线测试题&#xff0c;包括动态读取题目&#xff0c;答题完毕后台评分&#xff0c;并返回答题结果。查看演示下载资源&#xff1a;1332次 下载资…

深度揭秘AI换脸原理,为啥最先进分类器也认不出?

文章来源&#xff1a;VentureBeat&#xff0c;arXiv智东西4月20日消息&#xff0c;AI换脸已不是新鲜事&#xff0c;手机应用市场中有多款换脸app&#xff0c;此前也曾曝出有网络IP用明星的面孔伪造色情影片、在大选期间用竞选者的脸制作虚假影像信息等。为了规避Deepfake滥用带…

中美德工业互联网路径比较

转自丨无锡情报所作者丨王喜文&#xff0c;九三学社中央促进技术创新工作委员会委员、九三学社中央科技委委员过去20年&#xff0c;互联网是改变社会、改变商业最重要的技术&#xff1b;如今&#xff0c;随着5G、物联网以及云计算和大数据、区块链、人工智能技术的迅速发展&…

不同浏览器隐藏默认表单样式

各种appearance: none; 转载于:https://www.cnblogs.com/haimingpro/p/7168738.html

jmeter file upload 变量_通达OA上传漏洞之变量覆盖分析

作者&#xff1a;kw0ng开始通达OA上传到包含漏洞分析的文章已经有很多&#xff0c;本文重点分析&#xff0c;文件上传处决定路径信息是否回显的UPLOAD_MODE参数是怎么传递的。代码分析触发文件上传点位于/ispirit/im/upload.php中&#xff0c;服务端在接收文件信息的同时还需要…

如果卷积神经网络存在根本性的缺陷,你会怎么看?

来源&#xff1a;人工智能头条作者 | Ben Dickson译者 | 香槟超新星经过一段漫长时期的沉寂之后&#xff0c;人工智能正在进入一个蓬勃发展的新时期&#xff0c;这主要得益于深度学习和人工神经网络近年来取得的长足发展。更准确地说&#xff0c;人们对深度学习产生的新的兴趣在…

产业|嵌入式传感器将是未来机器人等技术增长的核心

来源&#xff1a;EEWORLD移动即服务(MaaS)被认为是智能移动的一个关键要素&#xff0c;而机器人汽车技术将是智能移动的一个重要因素&#xff0c;它又高度依赖于嵌入式传感器。根据市场研究和战略咨询公司Yole development pement (Yole)的预测&#xff0c;在这种情况下&#x…

可观测宇宙中,我们可能是唯一的生命

图片来源&#xff1a;Pixabay长期以来&#xff0c;人类一直渴望在宇宙中找到地外生命的痕迹&#xff0c;但一项于今年早些时候发表的研究&#xff0c;给持有此类想法的人泼了一盆冷水。基于“自然发生”学说以及其中的“RNA世界”假说&#xff0c;研究人员认为在可观测宇宙中&a…

中国工程院发布“中国电子信息工程科技发展十六大挑战”

来源&#xff1a;通信世界全媒体通信世界网消息&#xff08;CWW&#xff09;为响应中央决策部署,推进我国新型数字基础设施建设,推动我国电子信息工程科技领域高质量发展&#xff0c;助力数字基建科学发展驱动壮大经济新动能。4月26日&#xff0c;中国工程院信息与电子学部、中…

Unix下5种I/O模型

Unix下I/O模型主要分为5种&#xff1a; &#xff08;1&#xff09;阻塞式I/O &#xff08;2&#xff09;非阻塞式I/O &#xff08;3&#xff09;I/O复用(select和poll) &#xff08;4&#xff09;信号驱动式I/O &#xff08;5&#xff09;异步I/O 1、阻塞式I/O模型 unix基本的套…

2019年智能科学与产业综述论文盘点

来源&#xff1a;计算机研究与发展2019年综述论文盘点1.智能芯片的评述和展望&#xff08;韩栋,周聖元,支天,陈云霁,陈天石&#xff09;2.闪存存储的重构与系统构建技术&#xff08;陆游游,杨者,舒继武&#xff09;3.基于动态权衡的新型非易失存储器件体系结构研究综述&#xf…

h命令可以获取mysql客户端的帮助信息_如何获取MySQL帮助信息

在开发或测试环境在碰到MySQL相关故障时&#xff0c;大多数朋友可能会通过论坛发帖&#xff0c;QQ群讨论方式来获取帮助。该方式是获取帮助的有效途径之一。然而如果在生产环境&#xff0c;在没有网络的环境下&#xff0c;这些方式就无助于问题的解决。无论何种数据库&#xff…

AI与人类围棋士的差距到底有多大?

来源&#xff1a;计算广告四年前&#xff0c;谷歌旗下DeepMind公司开发的围棋人工智能AlphaGo以4-1战胜韩国大国手李世乭九段。今天&#xff0c;AlphaGo在大众视野中掀起的惊涛骇浪已渐平息&#xff0c;AlphaGo和李世乭都已从江湖退隐。然而&#xff0c;围棋界因AlphaGo而起的沧…

mariadb使用mysql驱动_MariaDB安装与使用

下载相对应的电脑版本程序等待下载完成......安装教程&#xff1a;双击运行设置数据库的密码等待安装完成..这样就完成安装了。安装完成&#xff0c;会在桌面生成这个图标双击可以直接使用下面我通过两种方式来使用MariaDB数据库(可视化&#xff0c;命令行)通过可视化方式使用。…

脑机接口技术重大突破!首次帮助瘫痪男子恢复运动和触觉

来源&#xff1a;网易智能触觉是我们感受外部世界不可或缺的感官&#xff0c;但许多人却因脊髓损伤或因患病瘫痪而失去这种能力。不过&#xff0c;最近非营利组织巴特尔研究所的研究人员宣称&#xff0c;他们首次利用脑机接口&#xff08;BCI&#xff09;技术帮助一名美国瘫痪男…

python海龟图画龙珠_火影,海贼王,七龙珠,还在为漫画书发愁!我用Python一键生成电子漫画书...

小时候看漫画都是要买书的&#xff0c;一本好几块钱&#xff0c;成本那个高啊后来可以在线看漫画&#xff0c;感觉真是爽不过近几年新的问题又出现了&#xff1a;漫画网站广告太多&#xff0c;更重要的是越来越多的作品、章节出于各种原因被下架、限制观看。为了提升观看体验&a…

谷歌自揭“家丑”:医疗AI实验室表现超神,临床结果却不佳

来源&#xff1a;澎湃新闻在医疗领域&#xff0c;尤其是在医学影像筛查过程中&#xff0c;人工智能常被描述为完美的工作者。它们能准确识别疾病&#xff0c;拥有人类专家级的发现能力&#xff0c;还不知疲倦。但与许多技术一样&#xff0c;在实验室取得成功是一回事&#xff0…

mysql 移植ucos_基于STM32F767的UCOSIII移植学习

(一)移植前的准备1.HAL库基本工程模板新建一个工程模块&#xff0c;其中包含LED驱动和串口驱动程序即可&#xff0c;用于验证UCOS-III系统能够正常工作。2.UCOS-III源码准备去Micrium官网下载最新的UCOSIII源码&#xff0c;下载地址&#xff1a;Micrium官网下载地址&#xff0c…

美国5G到底怎么了?

来源&#xff1a;网优雇佣军美国司法部长威廉巴尔&#xff08;William Barr&#xff09;在2月6日应华盛顿智库“战略与国际研究中心”&#xff08;CSIS, Center for Strategic & International Studies&#xff09;邀请&#xff0c;参加了“中国倡议”会议&#xff08;Chin…