同福

PHP的几种运行模式cli、fpm、apache、zts比较【20210511】

介绍

介绍

福哥打算使用Docker方式安装最新版本的PHP环境,从hub上面查到了几个版本,包括cli、fpm、apache和zts,这几个版本有什么区别呢?福哥应该如何选择呢?

今天福哥就带着大家把这几种PHP的运行模式好好地属性一下。

CLI

CLI就是Command Line Interface的简写,也就是说就是在命令行里使用PHP程序的方式。这个版本下面通常是不支持web服务器方式访问的,不过在PHP5.4版本之后可以使用php内置的web服务器提供web服务的访问。

下面福哥就把php内置的web服务器的使用方法展示给大家,跟着福哥来吧~~

安装

拉取镜像

docker pull php:7.4-cli-buster

启动容器

docker run -tid --name php-cli -h php-cli php:7.4-cli-buster

启动web服务器

切入容器

docker exec -ti php-cli "/bin/bash"

启动web服务器

root@php-cli:/# mkdir webroot
root@php-cli:/# cd webroot/
root@php-cli:/webroot# php -S localhost:80
[Wed May 12 02:22:38 2021] PHP 7.4.19 Development Server (http://localhost:80) started

测试

需要启动另外一个进程,切入容器里面操作。

root@php-cli:/# cd webroot/
root@php-cli:/webroot# echo "<?php echo \"the demo of PHP cli by tongfu.net\n\";" > test.php
root@php-cli:/webroot# curl 'http://localhost/test.php'
the demo of PHP cli by tongfu.net

home/topic/2021/0512/10/5e639bb8d2149168e8488a9bf4085d26.jpg再来看web服务器进程的窗口的输出信息。

home/topic/2021/0512/10/02322fc8c691c166f6de799daa50c5fa.jpg

FPM

FTPM就是FastCGI Process Manager的简写,它是一种以CGI方式运行PHP的方式,它是以进程方式运行PHP的。通常情况下PHP的fpm模式会配合Nginx服务器使用,使用PHP+Nginx的组合方式搭建的运行环境更加轻巧、速度更快。

福哥会在后面教给大家使用PHP的fpm模式配合Nginx搭建运行环境,敬请期待吧~~

Apache

不言而喻,这种方式就我们最长用的使用Apache运行PHP的方式,Apache默认是通过线程方式运行PHP的,优点是启动速度非常快,缺点是占用内存比较高。

Apache是一款全家桶web服务器,包括了绝大多数搭建web应用需要的功能模块,不管你用不用得到它都有,包括SSL、URL重写、输出数据压缩等等。

ZTS

ZTS就是Zend Thread Safely的简写,意思是说这个版本的PHP是基于线程安全的,相对的有一个版本叫做NTS,就是None Thread Safely,意思是非线程安全的。

基于线程安全和非线程安全是针对不同的操作系统内核来说的,通常情况下Linux操作系统下面的PHP是以ZTS方式运行的,而Windows操作系统下面的PHP是以NTS方式运行的。

为什么没有NTS版本?因为那是Windows平台嘛,我们玩的是Docker,是Linux啊~~

总结

今天福哥带着大家针对php的四种运行模式cli、fpm、apache、zts进行了一个比较深刻的了解,我们可以根据业务功能和硬件环境合理选择PHP的运行模式。