zl程序教程

您现在的位置是:首页 >  其他

当前栏目

docker自动部署多环境,php自动部署工具

2023-03-07 09:51:39 时间

博主介绍云计算中的优质创造者新星计划第三季python track获得第一名阿里云ACE认证高级工程师,阿里云开发者社区专家博主博主微信交流社区小鹏Linux个人社区欢迎您的加入。

目录

1.关于PHP

2.PHP语言的特点

3.PHP内置函数

4.PHP版本记录

5.在Docker中部署和运行PHP

结束语

1.关于PHP PHPHypertext预处理程序超文本预处理程序是一种通用的开源脚本语言。语法吸收了C、Java、Perl等语言的特点,有利于学习和应用,主要适用于Web开发领域。PHP的执行效率比CGI高,CGI完全生成HTML标签。很多PHP还可以执行编译好的代码,可以实现加密,优化代码运行,使代码运行更快。

2.PHP语言的特点1开源和免费

PHP是一个开源软件项目,拥有大量受众和众多开发者。Linux Nginx Mysql PHP是其经典的安装部署方式。所有相关软件都是开源免费的,所以使用PHP可以节省很多正版授权费用。但是PHP作为开源软件,缺乏大型科技公司的支持,后台网络对其的负面评价也是经久不衰。但其不断迭代、性能不断增强的现实,激励着PHP社区用实际行动强烈回应各种质疑。

2快速高效

PHP的内核是C语言编写的基础,效率高,可以用C语言开发高性能的扩展组件。PHP的核心包含了1000多个内置的函数和函数,并且是全面的,开箱即用的,程序代码简单。PHP数组支持动态扩展,用数字、字符串或混合键名关联数组可以大大提高开发效率。PHP是弱类型语言,编译通过率高,开发效率比其他强类型语言快。PHP自然热部署在php-fpm运行模式下,代码文件覆盖完成。经过20多年的发展,热部署PHP可以在网上找到大量的参考资料供参考。

3性能改进

PHP的版本越高,其整体性能越高。根据官方介绍,PHP7.0.0的性能比PHP5.6提升了2倍,PHP7.4已经比PHP7.0快了30倍左右,30PHP8.0在性能上比PHP7.4好了10%左右。PHP 8.0引入了JIT编译器特性,并添加了许多新的语言函数,如命名参数、联合类型、注释、构造函数属性提升、匹配表达式、nullsafe运算符,以及对类型系统、错误处理和一致性的改进。PHP有自己的核心开发团队,保持五年发布一个大版本,一个月发布两个小版本的频率。最新版本是PHP8.08. PHP 7.0.0发布于2015年12月03日。该版本下的最新版本是PHP 7.4.21发布日期2021-07-01。PHP 8.0.0于2020年11月26日发布。该版本下的最新版本是PHP 8.0.8发布日期2021-07-01。

4跨平台

每个平台都有对应的php解释器版本指针,为不同的平台编译目标平台的二进制代码(php解释器)。PHP开发的程序无需修改即可运行在windows、linux、unix等操作系统上。

5个常驻内存

在php-cli模式下,你可以实现程序内存驻留和数据库连接的所有变量都可以长时间存储在内存中[9]。实现资源重用的一个常用方法是用swoole组件编写cli框架。

6页生命周期

在php-fpm模式下,所有变量都是页面级的,全局变量和类的静态成员都将在页面上执行。

毕后被清空对程序员水平要求低占用内存非常少特别适合中小型系统的开发

3. PHP内置函数 

PHP 有很多标准的函数和结构。还有一些函数需要和特定的扩展模块一起编译否则在使用它们的时候就会得到一个致命的“未定义函数”错误。例如要使用 image 函数中的 imagecreatetruecolor()需要在编译 PHP 的时候加上 GD 的支持。或者要使用 mysqli_connect() 函数就需要在编译 PHP 的时候加上 MySQLi 支持。有很多核心函数已包含在每个版本的 PHP 中如字符串和变量函数。调用 phpinfo() 或者 get_loaded_extensions() 可以得知 PHP 加载了那些扩展库。同时还应该注意很多扩展库默认就是有效的。 

在PHP编程里需要注意用户的输入安全对用户各个方面的输入都要做好相关的过滤处理内置函数里提供了不少的安全相关的函数编程学习者需要重点掌握以下的7个重点函数如下表格

用户输入安全的7个内置函数 

函数名称

用途简介

htmlentities

将字符转换为 HTML 转义字符

htmlspecialchars_decode

将特殊的 HTML 实体转换回普通字符

htmlspecialchars

将特殊字符转换为 HTML 实体

nl2br

在字符串所有新行之前插入 HTML 换行标记

str_replace

子字符串替换

strip_tags

从字符串中去除 HTML 和 PHP 标记

stripslashes

反引用一个引用字符串

4. PHP版本记录 

版本

发布日期

最终支持

相关更新及备注

1.0

1995-06-08

--

首次使用

2.0

1996-04-16

--

针对PHP 1.0的改进版速度更快、体积更小更容易产生动态网页。

3.0

1998-06-06

2000-10-20

Zeev Suraski和Andi Gutmans重写了底层支持可扩展组件。

4.0

2000-05-22

2001-06-23

增加了Zend引擎支持更多的 web 服务器、HTTP Sessions 支持、输出缓冲、更安全的用户输入和一些新的语言结构

4.1

2001-12-10

2002-03-12

加入了superglobal(超全局的概念即$_GET、$_POST等)

4.2

2002-04-22

2002-09-06

默认禁用register_globals

4.3

2002-12-27

2005-03-31

引入了命令行界面CLI用来不用CGI

4.4

2005-07-11

2008-08-08

修复了一些致命错误

5.0

2004-07-13

2005-09-05

Zend升级为二代引擎开始支持面向对象编程

5.1

2005-11-24

2006-08-24

引入了编译器来提高性能、增加了PDO作为访问数据库的接口

5.2

2006-11-02

2011-01-06

默认启用过滤器扩展

5.3

2009-06-30

2014-08-14

支持命名空间;使用XMLReader和XMLWriter增强XML支持;支持SOAP ,延迟静态绑定跳转标签有限的goto, 闭包Native PHP archives。php-fpm在php5.3.3 版本成为了官方正式组件

5.4

2012-03-01

2015-09-03

支持Trait、简短数组表达式。移除了register_globals, safe_mode, allow_call_time_pass_reference, session_register(), session_unregister(), magic_quotes以及session_is_registered()。加入了内建的Web服务器。增强了性能减小内存使用量。

5.5

2013-06-20

2016-07-10

支持generators用于异常处理的finally 将OpCache基于 Zend Optimizer加入官方发布中。

5.6

2014-08-28

2018-12-31

常数标量表达式、可变参数函数、参数拆包、新的求幂运算符、函数和常量的use语句的扩展、新的phpdbg调试器作为SAPI模块以及其他更小的改进。使用php://input替代 $HTTP_RAW_POST_DATAiconv和mbstring配置选项中和编码相关的选项废弃。

6.x

未发布

--

取消掉的、从未正式发布的PHP版本。

7.0

2015-12-03

2018-12-03

Zend引擎升级到三代 整体性能是5.6的2倍。移除ereg、mssql、mysql、sybase_ct等4个扩展。引入了类型声明有两种模式: 强制 (默认) 和 严格模式。支持匿名类。

7.1

2016-12-01

2019-12-01

void返回值类型类常量可见性修饰符新增可为空Nullable类型新增短数组语法[]的支持多异常捕获处理废弃了mcrypt 扩展用OpenSSL取代

7.2

2017-11-30

2020-11-30

GD 扩展内的 png2wbmp() 和 jpeg2wbmp() 被废弃对象参数和返回类型提示、抽象方法重写等

7.3

2018-12-06

2021-12-06

更灵活的 Heredoc 和 Nowdoc 语法大小写不敏感的常量声明现被废弃在字符串中搜索非字符串内容都将被视为字符串而不是 ASCII 编码值。

7.4

2019-11-28

2022-11-28

Preloading预加载机制改进OpenSSL、弱引用等。属性添加限定类型、有限返回类型协变与参数类型逆变、数值文字分隔符为过渡到PHP8做了一定的准备。

8.0.0

2020-11-26

--

JIT Just-In-Time即时编译、新增static返回类型、新增mixed 类型、命名参数Named arguments和注释Attributes   不再允许通过静态调用的方式去调用非静态方法字符串与数字的比较将首先将数字转为字符串再比较 

5. 在Docker中部署运行PHP

1.使用官方镜像 

第一步在PHP项目的根目录中新建一个Dockerfile

FROM php:5.6-cliCOPY . /usr/src/myappWORKDIR /usr/src/myappCMD [ php, ./hello.php ]

新建hello.php文件

<?phpecho hello php\n?>

第二步运行docker build命令构建镜像

$ docker build -t php-image .

最后执行以下命令去运行Docker镜像

$ docker run -it --rm --name php-container php-imagehello php

2.挂载PHP项目 

如果大家需要运行简单的甚至单文件的PHP项目那么每次都写Dockerfile会很麻烦。这种情况下可以用以下命令挂载PHP项目 $ docker run -it --rm --name my-running-script -v $(pwd):/usr/src/myapp -w/usr/src/myapp php:5.6-cli php your-script.php

3.配合Apache使用 

通常情况下PHP项目需要和Apache httpd/Nginx一起运行这样就需要PHP容器中内含Apache Web Server。读者可以使用带有apache标签的镜像如php5.6-apache。 第一步在读者的PHP项目的根目录中新建一个Dockerfile并使用Docker Hub官方的基础镜像 FROM php:5.6-apacheCOPY src/ /var/www/html/ 其中src/是当前包含所有PHP代码的目录。 第二步使用此Dockerfile构建自定义镜像 $ docker build -t my-php-app .

第三步创建并运行此镜像

$ docker run -it --rm --name my-running-app my-php-app 建议大家添一个自定义的php.ini配置文件将其拷贝 到/usr/local/lib。这样读者可以对PHP项目做更多的定制化如开启某些PHP插件或者对PHP解释器进行一些安全/性能相关的配置。添加方法很简单 FROM php:5.6-apacheCOPY config/php.ini /usr/local/lib/COPY src/ /var/www/html/

提示 

src/是当前存放PHP代码的文件夹config/文件夹包含php.ini文件

如果大家希望直接使用官方镜像运行PHP项目可以执行如下命令

$ docker run -it --rm --name my-apache-php-app -v $(pwd):/var/www/html php:5.6-apache   结束语