1.文档阅读
TBD
2.整理输出 2.1 docker中安装PHP参见
PHP 8.0 - window 10下[含Docker方式]安装 - 学习/实践_穿素白衫的少年的博客-CSDN博客
Docker Hub // PHP 各版本镜像
2.2 执行命令查看开启的扩展
php -v
php -m
可以看到一些信息, 安装之后,未做任何配置,默认开启的扩展都是PHP Modules的扩展,而Zend Modules没有扩展开启。 需求
现在做个abstract test 测试生成器的性能如何
代码参见TBD
其中有使用到bcsub函数, 也就是BC扩展PHP: BC Math - Manual
默认是没有开启的,这里以Docker中开启BC扩展为例
2.3 找到php.ini配置文件
whereis php
或者
php --ini
一般在/usr/local/etc/php目录下 进入该目录 2.4 拷贝并修改配置文件
cp php.ini-development php.ini
输入命令:
vim php.ini
安装vim方法:
2021-04-30 - Docker - 编辑容器中的文件 - 学习/实践_穿素白衫的少年的博客-CSDN博客_docker 编辑容器
2.5 编辑开启扩展 但是发现, bcmath在docker中开启的方式不是这样的, docker做了另外的处理,网上其博客,如下执行步骤 于是, 进入到 /usr/local/bin目录下, 并且大致查看了目录下内容, 多数为shell脚本,[应是docker做了外层处理] docker-php-ext-install shell脚本中,进入到 cd /usr/src/php/ext PHP源代码扩展目录下, 大致意思应该就是查找要安装的扩展然后安装~ php/docker-php-ext-install at 1bc63c1ce4294a4ecb50c60dcf6a57d6749cba7d · docker-library/php · GitHub--- docker-library 直接查看相关文件内容 输入 docker-php-ext-install -h 再次查看该命令用法[下面输入中,第一个扩展就是bcmath, 因为顺序按照英文字母顺序输出],其实上面的shell脚本内容中已经有说明, 结合自身需求,输入命令如下:
docker-php-ext-install bcmath
或者
如 docker-php-ext-install mysqli
上面有一些信息值得关注,接下来执行输出的提示
make test
同时可以看到新增的配置文件 /usr/local/etc/php/conf.d 目录下 补充: 安装mysqli之后 插入:
安装gd扩展,
php - Installing GD in Docker - Stack Overflow
php 7.4 没有安装扩展
这里在安装项目的依赖时:composer install
出现如下报错,
解决办法:
apt-get update -y && apt-get install -y libpng-dev
然后执行
docker-php-ext-install gd
延伸:
解决zip扩展问题
docker-php-ext-install zip fails · Issue #61 · docker-library/php · GitHub
简单说,是相同的原因,也是系统中缺少必要的库,先安装依赖的库,然后再安装扩展即可
apt-get update && apt-get install -y \ zlib1g-dev \ libzip-dev
docker-php-ext-install zip
2.6 重启容器
docker restart 容器ID/容器名
或者直接通过desktop App点击重启按钮操作均可 2.7 进入容器, 并查看扩展是否开启
docker exec -it 容器ID bin/bash
php -m
可以看到一切开启扩展~~ Over 2.8 然后继续任务测试~ 后连续执行单独运分别行三次
with-gen
root@512cde94c29c:/var/www/html/learning_of_php8.0/generator/abstract-test# php -f ./with-gen.php
time: 0.3218
memory (byte): 16781312
root@512cde94c29c:/var/www/html/learning_of_php8.0/generator/abstract-test# php -f ./with-gen.php
time: 0.3188
memory (byte): 16781312
root@512cde94c29c:/var/www/html/learning_of_php8.0/generator/abstract-test# php -f ./with-gen.php
time: 0.3157
memory (byte): 16781312
not-gen
root@512cde94c29c:/var/www/html/learning_of_php8.0/generator/abstract-test# php -f ./not-gen.php
time: 0.3298
memory (byte): 52436992
root@512cde94c29c:/var/www/html/learning_of_php8.0/generator/abstract-test# php -f ./not-gen.php
time: 0.3236
memory (byte): 52436992
root@512cde94c29c:/var/www/html/learning_of_php8.0/generator/abstract-test# php -f ./not-gen.php
time: 0.3241
memory (byte): 52436992
root@512cde94c29c:/var/www/html/learning_of_php8.0/generator/abstract-test#
测试结果:【AVG】
-------------------------------------------- | time | memory, mb | -------------------------------------------- | not gen | 0.3258 | 50.01 | -------------------------------------------- | with gen | 0.3188 | 16.00 | --------------------------------------------
顺便可以看到
PHP 8 下面将生成器的占用内存更加少,不过相比在 >=5.5, 7.x
PHP 8 做了非生成器下优化,内存从146.75降到50.01 MB, 生成器下内存没有变化~
测试正常运行~ 后续补充 ... |