PHP如何工作,它的体系结构是什么?

阿德林

伙计们,最近我决定回到PHP,做一些比简单登录页面更复杂的事情。三年来,我一直在使用Java / JavaEE进行编程,并且对Java应用程序的体系结构有很好的了解。基本上,虚拟机(一个简单的OS进程)运行称为字节码的已编译代码。一个简单的Java Web服务器基本上是一个Java应用程序,它侦听所提供的TCP端口上的Http请求并做出相应的响应,这当然要复杂得多,但这是其最初的工作。

现在,PHP呢?它是如何工作的 ?简而言之,就是它的体系结构。

我在这个问题上用谷歌搜索,但是在90%的文章中,我解释了如何用PHP来实现和构建Web应用程序,这不是我想要的。

降低

Java Web服务器和PHP之间的最大区别是PHP没有自己的内置Web服务器。(嗯,较新的版本可以使用,但是应该仅用于测试,它不能用于生产环境的Web服务器。)PHP本身基本上是一个可执行文件,可读取PHP代码的源代码文件并解释/执行该代码中的命令。文件。而已。简而言之,这就是PHP的体系结构。

该可执行文件支持用户API代码可以调用的默认API,并且可以添加扩展以提供更多API。这些扩展通常以C编写,并在安装时与PHP可执行文件一起编译。某些扩展只能通过使用其他标志重新编译PHP来添加,而其他扩展则可以针对PHP安装进行编译,然后通过配置文件激活。PHP提供PEAR和PECL方面的项目是为了标准化和简化此类事后安装。Userland PHP代码通常还将包括其他简单地用PHP代码编写的第三方库。C扩展的优点是它们的执行速度和低级系统访问权限,而Userland代码库的优点是它们的琐碎包含。如果您要管理自己的PHP安装,则“ 通常很容易添加新的PHP扩展;但是,在非常流行的共享主机模型上,主机要安装的内容与开发人员需要的内容之间通常会存在紧张关系。

实际上,用PHP编写的Web服务通常在第三方Web服务器上运行,该服务器通常是Apache,它会处理所有传入请求并使用给定的请求PHP源代码文件作为参数来调用PHP解释器,然后将该进程的所有输出传递回给HTTP客户端。这也意味着,没有像Java通常那样在任何时候都以持久状态运行持久的PHP进程,但是每个请求都是通过启动然后拆除新的PHP实例来处理的。

Java仅将持久性数据保存在内存中,而PHP中请求之间的数据持久性则通过多种方法来处理,例如内存缓存,会话,数据库,文件等。视情况而定。PHP确实具有操作码缓存插件,其工作类似于Java字节码,只是这样,PHP不必在每次执行相同文件时都重复相同的解析和编译过程。

请记住,编写一个持久运行的PHP程序(就像Java一样运行)是完全可行的,这根本不是PHP的默认方式。就个人而言,我非常喜欢为在Gearman或ZMQ上持续运行的特定任务编写工作人员,并且在Web服务器上运行一些短暂脚本作为“前端”,根据需要将工作委托给这些工作人员。

如果这听起来像一个典型的PHP应用程序,而不仅仅是几个不同组件的胶粘在一起,那您是正确的。Java是非常独立的,除了RDBMS服务器之类的外部产品。另一方面,PHP通常倾向于依赖一堆第三方产品。在可以将最佳产品用于特定任务的意义上,它可以发挥其优势,但是在处理不同系统时也需要更多开销。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

REST体系结构中的端点是什么?

OSGi DB访问的高级体系结构布局是什么?

REST体系结构中的“表示状态”是什么

Sandybridge微体系结构中的堆栈引擎是什么?

MSBDS(Fallout)背后的微体系结构细节是什么?

洋葱体系结构中的典型层是什么?

这是什么汇编语言/体系结构?

为什么我的“首选项窗格”似乎认为它总是错误的体系结构?

模型驱动的体系结构值得吗?工具中的最新技术水平是什么?

ES2015模块化体系结构的标准方法是什么?

Android体系结构组件liveData和room-最低要求是什么?

在基于微服务的体系结构中,上游和下游服务是什么?

Web应用程序的体系结构图是什么?

在n层体系结构中Sqldependency的最佳替代方法是什么?

此机器体系结构图中的“效率”是什么?

Java类文件中的体系结构是什么意思?

存储几种文档类型的最佳DynamoDB体系结构是什么?

minio:minio.io对象存储服务器的集群体系结构是什么?

移动应用程序(MVC除外)中使用的体系结构模式是什么?

“与软件应用程序的目的特别相关的体系结构”是什么意思?

Unix和Linux在体系结构上的根本区别是什么?

分支机操作码是什么意思(X86体系结构)?

如何获得“ .a”文件的体系结构?

如何创建可扩展的体系结构

为什么此代码段错误在64位体系结构上却在32位体系结构上能正常工作?

PHP中的消息队列和工作器系统的有效体系结构?

telepat.io如何工作?telepat.io的体系结构

Node.js集群体系结构:如何扩展主工作者

SMP计划在Linux内核中如何工作?(ARM体系结构)