返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php-fpm,uwsgi,tomcat,hyperf 处理区别
  • 483
分享到

php-fpm,uwsgi,tomcat,hyperf 处理区别

phptomcat服务器 2023-08-31 14:08:12 483人浏览 安东尼
摘要

写作背景 从PHP迁移到python过程中,我想不明白为何php-pfm能做到不重启就能加载代码,而uwsgi却必须重启,两者之间的区别是什么?两者为和要做出这种差异?那uwsgi和hyperf框架是

写作背景

PHP迁移到python过程中,我想不明白为何php-pfm能做到不重启就能加载代码,而uwsgi却必须重启,两者之间的区别是什么?两者为和要做出这种差异?那uwsgi和hyperf框架是一样的吗?两者又有什么区别?为何最早期的servlet能够调用服务器级别的Application?

php-fpm运行机制

  1. 因为php的创造之初的目标就是为了牺牲性能而降低技术投入,所以为了省掉运维重启这个环节,重启又牵涉到常驻内存这些概念,对非科班出身的人来说,也会有理解负担
  2. 如果一个团队维系十几个站点,每个都要打成包,在更新代码时,还要上线重启都增加了额外的技术投入,对开发者不友好
  3. 于是创造者直接将该过程与站点直接分离,php-fpm运行和站点是独立的,等到到Nginx收到消息,并把root路径给php-fpm,php-fpm才去找index.php文件启动渲染
  4. 这导致的一个问题是每次请求发过来,整个框架代码都要被重新载入一遍,如果在框架运行前要载入一堆逻辑时,才能运行代码是,请求就很慢,时间浪费在载入代码上了
  5. 好处是一个对象会被反复构建,__construct() 函数可以被重复利用来作为拦截器使用,而在常驻内存的hyperf框架来说,则行不通,因为每个类都是一个单例,启动后即被创建为进程了,之后该类的_construct()就不会再被创建了,这点差异让我一开始接触hyperf完全摸不着头脑

uwsgi

  1. 该服务器启动时会直接检测站点代码,在检测通过后,则把代码实例化后,放在内存中,且线程是常驻的
  2. 这种做法能减少每次载入代码的时间,也不必再次所有所有的文件进行解释,性能上提上去了,静态化后就是灵活度降低了;

hyperf

  1. hyperf就是php-fpm的升级版,也是基于多进程的机制,不同之处是静态化加载过程,而不是像php-fpm一样等nginx送过来root,再去载入代码,机制跟uwsgi很像了,但是uwsgi采用线程模式比进程更轻量一些,但对于WEB来说,又没有线程和进程间的切换,常驻时,也没太大区别
  2. hyperf框架采用全局单例的方式,每次request会被重新载入数据,而__construct不再被重复new,所以拦截器不能再放在构造函数中,而是要放在hyperf定义的中间件中去了

Tomcat

  1. 最早年学习JAVA WEB时,发现java servlet有个特殊的存在,就是Application,这个今天又重新回看了一下,这个Application并非是代码本身的一个存在,而是实现的tomcat中的一个接口中自带的,也即是说,在java web编程中,已经默认跟tomcat关联了,且tomcat暴露了自己的全局变量Application给java web代码调用,这才能从全局层面修改Application数据
  2. 其他语言服务器暂没发现有此类api接口的存在,实际上这个特性可以通过链接第三方Redis做到数据间共享
  3. 而且Application在多台服务器之间仍然是不能共享的,在现在负载均衡高并发的概念下,Application又显得鸡肋了,这个是单机环境的好东西

来源地址:https://blog.csdn.net/wangsenling/article/details/127326008

--结束END--

本文标题: php-fpm,uwsgi,tomcat,hyperf 处理区别

本文链接: https://lsjlt.com/news/385973.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • php-fpm,uwsgi,tomcat,hyperf 处理区别
    写作背景 从php迁移到python过程中,我想不明白为何php-pfm能做到不重启就能加载代码,而uwsgi却必须重启,两者之间的区别是什么两者为和要做出这种差异?那uwsgi和hyperf框架是一...
    99+
    2023-08-31
    php tomcat 服务器
  • php-fpm和swoole有什么区别
    本教程操作环境:windows10系统、PHP7.1版、DELL G3电脑php-fpm和swoole有什么区别一.PHP-FPM早期版本的 PHP 并没有内置的 WEB 服务器,而是提供了 SAPI(Server API)给第三方做对接。...
    99+
    2019-08-28
    PHP
  • php的fpm和swoole有哪些区别
    本文小编为大家详细介绍“php的fpm和swoole有哪些区别”,内容详细,步骤清晰,细节处理妥当,希望这篇“php的fpm和swoole有哪些区别”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。区别:1、“PHP...
    99+
    2023-06-29
  • php-fpm高占用cpu处理
    最近服务器经常发现php-fpm进程cpu总数时不时就100%,提高cpu核数也还是一样 废话不多说,直接说解决方案: 一、先说说php-fpm三种子进程的管理方式 pm = static 静态,始终保持一个固定数量的子进程,这个数由(pm...
    99+
    2023-10-01
    php 服务器 性能优化
  • php异常处理和错误处理有什么区别
    PHP异常处理和错误处理之间有一些区别。1. 异常处理是一种更高级别的错误处理机制,允许程序捕获和处理运行时错误,而不会导致程序终止...
    99+
    2023-08-29
    php
  • php-fpm 502 bad gateway错误处理的示例分析
    这篇文章主要为大家展示了“php-fpm 502 bad gateway错误处理的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“php-fpm 502 ...
    99+
    2024-04-02
  • PHP 异常处理与错误处理的区别:让你不再混淆!
    一、PHP 异常处理和错误处理的总体区别 PHP 异常与错误都是指运行中出现的问题,区别在于:错误通常是 PHP 引擎在运行过程中发现的,而异常由开发人员通过 throw 语句主动抛出。错误通常是致命的,而异常可以被捕获和处理。 二、P...
    99+
    2024-02-24
    PHP 异常处理 错误处理 异常类型 错误类型
  • Ubuntu环境下如何处理没有PHP-FPM的情况?
    Ubuntu环境下如何处理没有PHP-FPM的情况? 在Ubuntu系统中,通常我们会使用PHP-FPM(FastCGI Process Manager)来处理PHP程序的请求,但有时...
    99+
    2024-03-08
    安装nginx 使用php 配置服务器 php解析
  • golang的串行处理和并行处理区别
    程序运算时往往需要数据,而数据的IO又往往需要时间传输,而常见的串行处理,是一个任务处理完成才接着处理新的任务, 其效率低下可想而知。 假如有3个任务要处理,而每个任务都有一定的阻塞...
    99+
    2024-04-02
  • php-fpm reload 会取消正在处理请求的解决方案
    目录起步reload 流程简介缓兵之计总结起步 在测试中,发现 php-fpm reload 会强制 kill 掉正在处理的请求。网上查了一下,发现其他人也有这个问题并反馈给了官方:...
    99+
    2024-04-02
  • PHP 和自然语言处理:有什么共性和区别吗?
    自然语言处理(Natural Language Processing,NLP)是一项涉及人工智能和语言学的交叉领域技术,旨在让计算机能够理解、分析、生成自然语言。而 PHP(Hypertext Preprocessor)则是一种流行的服务...
    99+
    2023-09-22
    自然语言处理 load numpy
  • 实时对象处理:PHP 和 Bash 的区别与优劣如何?
    随着互联网技术的发展和普及,实时对象处理成为了人们日常工作中必不可少的一部分。PHP 和 Bash 都是常见的实时对象处理语言,它们各自具有优点和缺点。本文将从多个方面对比 PHP 和 Bash 的实时对象处理能力,并探讨它们的优劣势。 ...
    99+
    2023-08-14
    bash 对象 实时
  • golang的串行处理和并行处理有什么区别
    这篇文章主要介绍“golang的串行处理和并行处理有什么区别”,在日常操作中,相信很多人在golang的串行处理和并行处理有什么区别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”golang的串行处理和并行处...
    99+
    2023-06-20
  • C++ 函数错误处理与异常处理有何区别?
    在 c++++ 中,错误处理和异常处理是处理意外状况的不同机制。错误处理使用 errno 全局变量或 getlasterror() 函数设置错误码,需由开发人员手动检查错误。异常处理则抛...
    99+
    2024-04-24
    c++ 异常处理 函数错误处理
  • Python 编码处理-str与Unicode的区别
    一篇关于STR和UNICODE的好文章 整理下python编码相关的内容 注意: 以下讨论为Python2.x版本, Py3k的待尝试 开始 用python处理中文时,读取文件或消息,http参数等等 一运...
    99+
    2022-06-04
    区别 Python str
  • PHP-FPM性能优化:提高网站并发处理能力的方法
    概述:在如今互联网时代,网站的并发访问量越来越大,为了迎接高并发的访问量,提高网站的并发处理能力变得非常重要。PHP-FPM(PHP-FastCGI Process Manager)作为一个高性能的PHP解决方案,可以有效地提高网站的并发处...
    99+
    2023-10-21
    性能优化 php-fpm 并发处理能力
  • python3 与python2 异常处理的区别与联系
    在python2.x中 ,异常是这样的处理的,异常基类后面加一个逗号“ ,” 然后跟着异常类型 import traceback try: 1/0 except Exception , err:...
    99+
    2022-06-04
    异常 区别
  • PHP-FPM性能优化:提高网站表单处理速度的注意事项
    导言:随着互联网的迅猛发展,网站表单已成为用户与网站进行交互的重要方式之一。然而,随着用户量的不断增加和用户行为的复杂化,网站表单处理速度的要求也越来越高。PHP-FPM是一种提供高性能的PHP FastCGI管理器,可以通过一些优化措施,...
    99+
    2023-10-21
    通过对PHP-FPM进行性能优化 优化代码和系统配置
  • c# Task.Wait()与awaiat Task异常处理的区别说明
    目录Task.Wait()与awaiat Task异常处理区别Task异常处理Task.WaitAll()注意事项先上代码Task.Wait()与awaiat T...
    99+
    2024-04-02
  • DOS批处理中%cd%与%~dp0的区别是什么
    这篇文章给大家分享的是有关DOS批处理中%cd%与%~dp0的区别是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。问题描述假设我们要在批处理a.bat里调用执行批处理b.bat,b.bat需要知道b.bat的...
    99+
    2023-06-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作