V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  mimiphp  ›  全部回复第 1 页 / 共 1 页
回复总数  20
164 天前
回复了 mimiphp 创建的主题 PHP php8.3 更新了
@lyxxxh2
我明白了。因为如果是我自己部署,肯定 nginx 是放在服务器,而不是容器。
但大多数提供的 docker 镜像都是打包好了包括 nginx ,语言,数据库全部软件包的镜像。
那当然容器对于服务器来说就需要映射端口。
服务器只有一个 80 端口,当然就需要在服务器再安装一个 nginx 来转发不同端口到不同容器了。

但如果是自己部署,我当然是一个 nginx 直接转发到 php-fpm ,即使存在 3 个不同容器的 php-fpm

需要注意的是 php-fpm 是 php-cgi 的进程管理器,php-cgi 只负责处理.php 文件。
所以静态文件还是需要 nginx 来处理,虽然 swoole 可以独立当作 http 服务器,但还是比 nginx 差远了。

我明白你纠结的问题所在。但第三方提供的镜像就是把 nginx 部署进去的,你也只能这样去用。
165 天前
回复了 mimiphp 创建的主题 PHP php8.3 更新了
@lyxxxh2
我不知道具体你 docker 里面到底要运行什么软件。
但如果有任何动态语言存在实际上都可以监听端口的啊。

然后 nginx 任何一个 docker 里面都不要部署进去,直接部署在系统外层。。然后根据不同域名配置不同的 server ,porxy_pass 指定 127.0.0.1:8081
porxy_pass 指定 127.0.0.1:8082
porxy_pass 指定 127.0.0.1:8083
不就好了么?
165 天前
回复了 mimiphp 创建的主题 PHP php8.3 更新了
@lyxxxh2
fpm 不是一定跟 nginx 才能绑定,其实跟一切能代理的软件都能绑定。。甚至 apache 改一下配置也是可以支持 php-fpm 的。
但为什么要用 nginx ,是因为 nginx 强大的并发性能和静态文件的处理能力。。这一点总是有人去忽略,而去谈代理。。。

还有你说的 nginx 绑定 3 个域名需要 3 个或者 4 个 nginx ,这就是你对 nginx 的工作原理不了解导致的了。

不论是不是 docker 安装的 nginx ,其实都只会映射消耗一个或者两个端口。
比如 80:80,443:443 。
docker 映射出来端口后,后面的域名访问就不会消耗端口了。。。。

因为 nginx 或根据访问的域名自动与 conf 配置文件匹配。。。也就是 server_name 这个参数就是来配置域名的。

你不同的域名,就是走不同的 server 配置,每个不同的 server 配置里面的 server_name 就是$host 这个 nginx 变量记录的
也就是说,访问不同的域名,其实都是走的 80 端口或 443 端口,但进入 nginx 的执行逻辑,就是根据不同的配置文件来读取不同的站点目录的事情了。。。。。


至于你说的 ip+端口,当然每个软件监听同一个端口肯定就会冲突,所以一个 ip 下要多个 web 服务,肯定就要消耗不同的端口了。

但 nginx 却是一个 ip 下消耗一个 80 端口就支持无限个域名绑定了。。。。
166 天前
回复了 mimiphp 创建的主题 PHP php8.3 更新了
@happy32199 webman 是基于 wokerman 的开发框架。wokerman 是纯 php 写的网络框架.你可以理解为
wokerman 是 Composer 第三方类库的扩展代码包。类似的第三方类库太多了。但都是 php 脚本代码的。
而 swoole 是 C 语言开发的,我们在谈 php 的性能,那肯定就是指 C 语言开发的 php 底层和扩展。
这一点来说,swoole 已经算是扩充了 PHP 的性能。但 wokerman 是调度了 PHP 内核自带的 pcntl_fork 子进程。
当然性能上来说区别不大,但思路上完全不一样。wokerman 走的多子进程。
swoole 是 C 语言独立支持的协程。

amphp 就是基于 php8.1 官方 Fiber 协程扩展封装的开发框架。

所以我们在讨论一个语言的问题,不是讨论一个框架的问题。

你可以说 swoole,Fiber,workerman ,但不能说 webman 和 amphp ,他们只是基于前面 3 个之一的开发框架而已
166 天前
回复了 mimiphp 创建的主题 PHP php8.3 更新了
@superares
大哥,我整篇内容报考回答你都可以看一下先。。我就是在反对工程化。当然你非要工程化来控制质量,那当然就是希望强类型开发编译方式了。就如某个回答一样,你为什么不换语言呢?
强类型编译检查都通过不了岂不是一目了然了?
166 天前
回复了 mimiphp 创建的主题 PHP php8.3 更新了
@superares
常量指定类型,这个是 class 封装后的一个性能优化,只能算特例。。

因为常量一旦定义,本身就无法修改。
但其实同样也是一个可选项,也就是自动推导依然存在。
但以前的版本是定义函数时都要求返回值配置类型。。这就太强类型化了。
目前更新来看都是漏洞修复,和扩充内置函数。
至于弱化强类型,需要大版本更新才知道,上面说到的只是我个人判断。
166 天前
回复了 mimiphp 创建的主题 PHP php8.3 更新了
@buxudashi
laravel 也是过度设计了
你这句话我非常认同,包括 wordpress 一样。其实严格来说一个语言是否好用,其实就是提现在 laravel 这样的开发框架,和 wordpress 这样的终端开源产品的使用火热程度。
在 web 开发领域,laravel 确实让很多中小型公司能快速开发属于自己的产品,这已经很优秀了。但。。。恰恰问题也出在 laravel 。由于现在程序开发实际就是很多很多不了解原理的伪程序员加入,laravel 架构如何设计,那大多数使用的程序员就认为 php 就是这样的设计了。

比如国内 php 程序员,其实都应该算 thinkphp 程序员,国外 laravel 程序员就算是 laravel 程序员。。
也可以说就是框架使用者。
但你不得不承认这些开源框架的出现才会让 php 这个语言火得起来。
但一个客观事实就是这些基于框架的程序员还不能理解 php 更新的兴奋点,因为他们接触不到。
甚至很多原生 sql 语句都不会写,但他们也一样开发出程序了,不是吗?

java 也同样一大批 springboot 的框架使用者。

前端也一样很多离开 vue ,根本不会写原生 js 。甚至原生 css 都不会了。

至于终端产品的 wordpress 市场占有率也摆在那里。
所以我们可能是更接触深入一些的 php 程序员,我也有自己的开发框架。
但任何语言不就是工具对吗?能用上快速完成任务,就是很好的。

至于 laravel 为什么这么难用,为什么 wordpress 性能这么低。那如果出现了性能瓶颈,你才会愿意去分析和研究原因。
当然这时就已经出现质疑 php 不行的情况出现了。但你稍微深入了解一下,可能自己开发个框架,或者原生写一下代码,其实 php 或者几个原生 sql 就解决了你的性能问题了。
程序员也是在逐步学习进步中的。

只是真实情况就是 laravel 或者 wordpress 就已经让很多人质疑 php 性能低了。
但另一面来说又让很多人不得不承认 php 实在太方便了,不是吗
166 天前
回复了 mimiphp 创建的主题 PHP php8.3 更新了
@happy32199
因为协程开发本身就需要更高深一些的技术把控,虽然协程是虚拟化的调度,但同样需要去了解 CPU 工作原理。所以官方一直没有做具体的例子,其实提供了 Fiber 你只要理解原理是完全可以操作的了。但如果你不是为了拿 php 做 cli 命令行模式去做纯后端,php 还是更适合走 php-fpm 的 cgi 网页模式。因为在 web 领域,php 的部署方式实在是太方便了。热更新这一点就非常符合 http 的短连接方式。

我上面已经举例,百度,淘宝等等大型互联网公司也会拿 php 来做 web 服务器的后端语言的。

如果你是中小型网站比如我的 https://ffsou.com 同样是非常顺手的。

至于你说的在上海 php 只能拿 8 9k..这完全就是每个公司的技术主管的问题。我们客观一点,你随便去任何一个在线求职网站看看。如果你进入一家以 php 为主体的开发公司,薪资肯定不会这么低的。你非要去一个.net 主体的公司,去问 php 岗位薪资,那当然就低人一等了嘛。。

就类似你去一个 vue 前端的公司,非要谈 react 或者 angular 多优秀。同样会被嗤之以鼻嘛。。。

比如我现在发布 php8.3 更新了,就放在 php 讨论组。。。却还是跑来一些强类型语言的人来找存在感一样的道理。道不同不相为谋而已
166 天前
回复了 mimiphp 创建的主题 PHP php8.3 更新了
@a632079
你回答得蛮好的,也肯定是持反对态度的。但希望你回答时,不要人身攻击,满篇带着不屑的态度。每个人的认知本来是有限的,并且任何语言只是工具。我整篇内容发表的是我个人观点,其中心思想就是 javascript,php,python 都是脚本语言,脚本语言的特性就是不要去让开发方式走强类型的伪编译,打包工程化。而微软和 facebook 却带着全世界的脚本程序员一直走工程化的方式,这是一种改变,但我认为没有任何性能提升。

至于你回复的一直说我认知问题,其实你自己也有很多认知错误。php-fpm 不是解释器,是进程管理器.

我拿 java 的 web 部署举例,是指:一个 web 服务器,任何一个动态语言都能监听端口,如果要谈单一语言的性能,强类型语言来做 web 服务器肯定比脚本语言要高效。但实际部署时为什么用 nginx ,原因就是 nginx 是直接面对用户请求的并发。nginx 的目的并不在 Proxy ,Proxy 只是它必须把逻辑部分转发给其他语言,但 nginx 强大之处在于静态文件的处理,比如图片,视频,html 等等。我回答你就不会去讽刺你的认知,我只是纠正一下。希望你也能做到这样的沟通。

至于后面你还在说协程本身协程本来就是运行时基于线程模型上的进一步抽象罢了。这个‘罢了’用得不够好。多线程一直是物理支持的 CPU 通道调度,程序要求 CPU 调度就会存在性能损耗。协程就如你说的各个语言逐步支持,但协程就是发展方向。脚本语言都在支持协程的路上,也就是中心思想就是协程是抽象化的线程完全正确,但脚本语言在性能上利用协程包括你说的强类型也在利用协程,这才是一个正确的性能优化方向。

也就是强类型和弱类型语言请不要再拿性能来说话,因为协程的出现,本身就已经在提高性能的路上了。
168 天前
回复了 mimiphp 创建的主题 PHP php8.3 更新了
@icy37785 多谢拉黑,因为沟通的过程其实很无聊,还要保持风度。既然互相看不上,没必要讨论是最好的结果
168 天前
回复了 mimiphp 创建的主题 PHP php8.3 更新了
@pubby 你现在就是在一个 php 开发的社区讨论没有理由选择 php 。。。你可以自己用 java 或者 nodejs 去开发相同的社区,然后在那边各种挖苦讽刺都无所谓。但最离谱的是,在一个 php 程序开发的社区来讽刺 php 有多么不堪。。岂不是自相矛盾?
而且我发布的聊天记录已经说清楚了,国内环境是由于高校主流只有 java 课程,证书认证。php 这种纯非营利性组织本来就没有官方认证证书。

你让这么多计算机毕业的程序员如何标榜自己是高人一等呢?

但就连淘宝,百度,小米,虎牙都在用的 php ,这么多小虾米却看不上,并且国外反过来却这么火,不应该自己反思一下吗?
168 天前
回复了 mimiphp 创建的主题 PHP php8.3 更新了
@dongisking 我不知道你对 php 的理解程度是到了什么级别。但是你提到的__call,包括__set,包括__get 。不是写得很清楚了吗?
调用不存在的方法,设置不存在的属性,和调用不存在的属性。。

这种魔术方法,魔术常量 php 非常多。你是在质疑 php 提供的这些方法和常量不可靠还是质疑看不懂?

你比如__DIR__ 就是获取当前脚本所在的系统绝对路径。。。你是想分析他的 C 语言代码的执行逻辑吗?对于应用级别开发的程序员,你只需要知道__DIR__就能拿到绝对路径,为什么能拿到你去关心什么呢?

同样的道理,当你实例化一个对象,然后调用了一个不存在的方法,你可以借用__call 来统一封装提示信息,或者跟踪日志等等。。

如果你开发过自己的框架

__set 方法和__get 方法是非常强大的两个魔术方法。

当控制器中直接
$this->aaa='你好';

由于当前控制器就没有这个这个成员属性。。所以__set 方法会被激活。你可以正好利用这个机制把调用的属性名称和值记录下来,然后做模板方法 display 的参数注入。。。这样在模板文件中就可以直接得到控制器对应的变量名和值了。

这些魔术方法已经说明了使用场景,为什么你要去知道执行过程呢?就是因为不清楚原理,所以叫才叫魔术啊。。。。
168 天前
回复了 mimiphp 创建的主题 PHP php8.3 更新了
@neoblackcap 主要谈的是 php ,但由于 python 和 javascript 都是脚本语言,附带提到。至于你说的 V8 ,VM 。本质上还是脚本运行环境,但我主要想表达,把 javascript 工程化,本地打包编译,是一个错误的发展方向。更夸张的是微软提出的 typescript 了。也就是不论基于浏览器引擎的浏览器 js 还是基于 v8 的 nodejs ,本质都是脚本语言,脚本语言最大的特性就是不是二进制,是字符串。我们开发的代码不是编译执行的字节码,而是解析引擎需要读取的 API 而已。你可以理解为跟 sql 字符串一样。。但数据库或者 php 解析引擎或者 python 解析引擎,或者浏览器的 js 解析引擎等等,都是得到我们的脚本代码,去激活内置的 C 语言逻辑,与 cpu 内存交互的底层还是 C 语言。
如果理解上面的说法,则任何基于脚本语言开发的所谓打包过程,工程化过程最终都会还原为脚本代码而已,没有提高任何性能。至于其他回复说到的可以规范 debug 可以规范开发等等。。这都是强类型语言编译打开的思想。

脚本语言最大的特性就是简化了开发,随时修改随时迭代。并且 php-fpm 还是个异类,可以说 nginx 与之交互的 php-fpm 多个线程之间毫无关系。这种特性可以保证你修改代码前一秒其他线程都能能完成用户响应,后续新的请求响应的就是你修改后的代码。

但强类型语言做不到。甚至 php+html 坚持的混编也是 20 年前 asp,cgi 等脚本语言发明的。

前端 vue ,react 等等框架提出的虚拟 dom ,diff 算法,最终到了今年 2023 年了。作者 vue 作者都在思考虚拟 dom 到底有没有必要存在。也就是以虚拟 dom 建立,却最终发现真实的 dom 才是根本。因为不管第三方折腾多少年。js 官方团队一直有自己的更新节奏。juqery 也一直在更新。。如果 vue 自己推到虚拟 dom ,最终不就跟后端 php 或者 asp 把 html 理解为普通字符串,然后混编 php 代码替换修改节点内容了吗?兜兜转转不就又回去了吗?
javascript 官方团队本身就在以浏览器解析基准的情况下提出模块组件式开发。一直在更新。
那微软的 typescript 到底在做什么?不就是让强类型语言的 java 程序员等等适应开发前端代码吗?不论解释如何优化,工程化,避免错误,debug ,最终还是编译成原生 javascript 不是吗?
那没有 typescript 之前,或者说 javascript 官方团队的开发方式就是垃圾?
明显就是弱类型语言的脚本语言开发方式不符合强类型语言的开发方式才搞出来的 ts 嘛。。。。所以我上面聊天时就说了态度,微软你这么出名,没必要改变 js 的编程习惯,你可以自己弄一个出来专门针对强类型语言的程序员的前端开发方式啊。并且打包编译二进制效率更高。要求每个用户安装一下就好了嘛。。。

但普通用户都是浏览器呀,javascript 就内置在浏览器内的呀。。。你搞这么多还不是要还原 javascript 嘛。。。你改不了啊。微软你自己不是有 IE 吗?现在没市场了,就来破坏前端开发流程参一脚了么?
168 天前
回复了 mimiphp 创建的主题 PHP php8.3 更新了
@BBCCBB 我不是 php 核心团队的人,很多信息也是看资料了解的,时间隔太久记不太准确,抱歉。但大体就是这么个情况,php 核心成员确实产生分歧,鸟叔确实不管 php 了。但其实还有其他中国人在核心团队,只不过投票确认的方向是大多数人的选择
168 天前
回复了 mimiphp 创建的主题 PHP php8.3 更新了
@kenvix 我是基于 php8.3 更新了,跟同事有感而发,而且我也是发在 php 讨论组,怎么就变成暴论了呢?
187 天前
回复了 huangjovin 创建的主题 全球工单系统 fsou.cc 是不是崩了?
可以试试这个非法搜索
https://ffsou.com
187 天前
回复了 mimiphp 创建的主题 站长 ffsou.com 这个非凡搜索好用吗
优化了体验,目前来自 5 个数据源,后面会加入本地爬虫,提供站长域名提交功能,欢迎体验,提建议和意见
193 天前
回复了 aisiji 创建的主题 Google 谷歌搜索怎么把回车搜索调整回来
@Rennen 如果是大家都关心的造孩子内容,推荐 yandex 更劲爆。
193 天前
回复了 aisiji 创建的主题 Google 谷歌搜索怎么把回车搜索调整回来
@Rennen
可以根据非大陆 IP 开放自由搜索模式,但既然是中文搜索,故意搜索特定造谣内容毫无意义,尽量以符合法律法规的方式使用更靠谱。就类似国外 youtai 内容你也不能自由评论一样,没有必要一定要在敌对阵营标新立异。
193 天前
回复了 aisiji 创建的主题 Google 谷歌搜索怎么把回车搜索调整回来
ffsou.com 这个非凡搜索还不错,没有广告,内容还蛮全面的
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   981 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 18ms · UTC 21:02 · PVG 05:02 · LAX 14:02 · JFK 17:02
Developed with CodeLauncher
♥ Do have faith in what you're doing.