php 写入数据库-[精选]Go和PHP在运行时有什么区别

2023-08-22 0 2,076 百度已收录

PHP运行时,每次请求进来都会创建一个fpm-worker进程,这样当系统并发量较高时,CPU就会造成频繁的进程创建成本。 详细信息请参见下图。

目前常见的4种PHP运行模式

CGI通用网段套接字模式

FAST-CGI模式

CLI 命令行模式

模块模式

1CGI通用网段socket模式

用户每次请求时,都会先创建一个cgi子进程,然后处理请求,处理完后结束子进程。

CGI是一种通用的网段套接字合约,用于保证Web服务器传输的数据采用标准格式。

php 写入数据库-[精选]Go和PHP在运行时有什么区别

2FAST-CGI模式

这是cgi的升级版本。 FastCGI 就像常驻(长寿)CGI。 还是可以执行的。 只要激活了,每次分叉都不用花时间。 这也是一份合同。

FastCGI的工作原理是:

1)、WebServer启动时加载FastCGI进程管理器【PHP的FastCGI进程管理器是PHP-FPM(php-FastCGIProcessManager)】(IISISAPI或ApacheModule);

2)、FastCGI进程管理器初始化自身,启动多个CGI类库进程(任务管理器中可以看到多个php-cgi.exe)并等待来自WebServer的连接。

3) 当客户端请求到达WebServer时,FastCGI进程管理器选择并连接到一个CGI类库。 Web服务器将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。

4)FastCGI子进程完成处理后,将标准输出和错误信息从同一个连接返回到WebServer。 当FastCGI子进程关闭连接时,请求被处理。 然后,FastCGI 子进程等待并处理来自 FastCGI 进程管理器(在 WebServer 中运行)的下一个连接。 在正常的CGI模式下,php-cgi.exe在这里退出。

在CGI模式下,你可以想象CGI一般有多慢。 每个Web请求PHP都必须重新解析php.ini,重新加载所有dll扩展并重新初始化所有数据结构。 使用 FastCGI,所有这些只在进程启动时发生一次。 另一个用途是持久数据库连接(Persistentdatabaseconnection)可以工作。

3CLI命令行模式

该模式通常在调用脚本、查看php信息时使用

php -r "phpinfo();"|少页面显示

4模块模式

工作原理

PHP-CGI:fast-cgi是一种契约,php-cgi就是实现这些契约的进程。 然而,这些实现都比较差。 它是单进程的,一个进程处理一个请求,处理完后进程就销毁。

PHP-FPM:是php-cgi的改进版本,直接管理多个php-cgi进程/线程。 换句话说,php-fpm是php-cgi的进程管理器,因此它也是fastcgi合约的实现。

php的运行原理是在服务器启动时手动加载PHP-FPM进程管理器,从而管理多个PHP-CGI进程来响应用户。

恳求,如右图:

多种经营模式相当于商场的不同入口。 运营原则是进入商场后遵循固定的步行路线,通过不同的运营模式进入底层。

Go 语言是如何工作的

golang首先被编译成静态的二进制补码可执行文件,然后运行。

主要看gorun和gobuild的区别

1gorun的执行流程,如图

创建两个临时文件夹b001和exe

先执行编译命令,然后链接生成归档文件.a和最终的可执行文件

最终的可执行文件放在exe文件夹上面。

该命令的最后一步是执行可执行文件。

例如,可以使用gorun-work看到生成的临时文件。 例如,当前生成的临时文件夹为以下路径:

localhost:hello ruby$ go run -work mytest.go
WORK=/var/folders/kt/nlhsnpgn6lgd_q16f8j83sbh0000gn/T/go-build593750496
HelloWorld
你好,Go!!!
localhost:hello ruby$ 

进入:/var/folders/kt/nlhsnpgn6lgd_q16f8j83sbh0000gn/T/go-build593750496目录,可以看到如下目录结构:

可以看到,最终的gorun命令生成了两个文件,一个是归档文件,另一个是可执行文件。

当第二次执行gorun命令时,如果发现导出的代码包没有改变,那么gorun不会再次编译导出的代码包。 直接静态链接进去。

gobuild的执行流程

php 写入数据库-[精选]Go和PHP在运行时有什么区别

gobuild的执行流程如右图

gobuild用于编译我们指定的源代码文件或代码包及其依赖包。 并且注意,如果用于编译非命令源代码文件,即库源代码文件php 写入数据库,gobuild执行后不会产生任何结果。

在这些情况下,gobuild命令仅检查库源代码文件的有效性,并且仅执行测试编译,而不输出任何结果文件。

gobuild编译命令源码文件时,会在命令的执行目录下生成一个可执行文件,其中的例子也证实了这个过程。

如果gobuild前面没有添加目录路径,则会将当前目录作为代码包进行编译。 如果gobuild命令前面带有代码包导出路径作为参数,则将编译代码包及其依赖项。

gobuild 命令到底有什么作用? 我们可以执行-n命令来查看。 此处跳过复制输出。

执行过程与gorun大致相同,唯一的区别是php 写入数据库,最后一步,gorun执行的是可执行文件,而gobuild命令只是编译库源代码文件,然后将可执行文件连接到的文件夹当前目录。

文章参考:

以上就是本文的全部内容,希望对您的学习有所帮助,也感谢您对PHP自学中心的支持

让学习成为一种习惯

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 php php 写入数据库-[精选]Go和PHP在运行时有什么区别 https://www.wkzy.net/game/140387.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务