2.1 Windows系统本地 默认情况下, PHP 8.0 是没有启动任何自带扩展的  php.ini // 复制php.ini.development而来  测试使用PDO扩展连接数据库, mysql 8.0 访问如下: http://localhost:8889/testMysql.php  报错原因很清楚, 没有找到驱动, 也就是PDO扩展没有开启 解决办法: 开启pdo-mysql扩展 打开php.ini文件 找到扩展配置, pdo-mysql, 解开注释, 因为这里只是用到pdo连接MySQL, 所以暂时没必要开启其他扩展. Note: 因为是第一次, 开启扩展, 所以, 要将扩展目录也要解开注释, 下图可以看到有详细的提示 []  选择Windows的选项, 解开注释:  即, 所有的PHP自带扩展动态链接库, 都存放在, 同级目录的ext目录下  重启服务器 这里使用PHP自带的服务器, 只要ctrl+c停止, 重新执行脚本即可   浏览器中查看phpinfo信息  可以看到pdomysql正常开启 最后, 重新运行之前测试使用pdo连接MySQL的测试 http://localhost:8889/testMysql.php  正常连接mysql [这里的MySQL是docker中容器MySQL服务器] 补充: 在查看php 8的信息时, 可看到, PHP 8.0的mysqlnd扩展, 支持的密码验证插件有: mysqlnd,debug_trace, auth_plugin_mysql_native_password, auth_plugin_mysql_clear_password, auth_plugin_caching_sha2_password, // PHP 7.4 是不支持的~ auth_plugin_sha256_password  2.2 Docker容器 1. docker中安装PHP参见:https://blog.csdn.net/william_n/article/details/111312171 // PHP 8.0 - window 10下[含Docker方式]安装 - 学习/实践 <a href=”https://hub.docker.com//php?tab=description&page=1&ordering=lastupdated” rel=”nofollow”>https://hub.docker.com//php?tab=description&page=1&ordering=last_updated // PHP 各版本镜像 2. 执行命令查看开启的扩展 php -v php -m  可以看到一些信息, 安装之后,未做任何配置,默认开启的扩展都是PHP Modules的扩展,而Zend Modules没有扩展开启。 需求 现在做个abstract test 测试生成器的性能如何 代码参见TBD 其中有使用到bcsub函数, 也就是BC扩展https://www.php.net/manual/zh/book.bc.php 默认是没有开启的,这里以Docker中开启BC扩展为例 3. 找到php.ini配置文件 whereis php 一般在/usr/local/etc/php目录下 进入该目录  4. 拷贝并修改配置文件 cp php.ini-development php.ini  输入命令: vim php.ini 安装vim方法: https://blog.csdn.net/william_n/article/details/116301117 // 修改docker容器中的文件 编辑开启扩展 但是发现, bcmath在docker中开启的方式不是这样的, docker做了另外的处理,网上其博客,如下执行步骤  于是,进入到 /usr/local/bin目录下 ,并且大致查看了目录下内容, 多数为shell脚本,【应是docker做了外层处理】 docker-php-ext-install shell脚本中,进入到 cd /usr/src/php/ext PHP源代码扩展目录下, 大致意思应该就是查找要安装的扩展然后安装~ https://github.com/docker-library/php/blob/1bc63c1ce4294a4ecb50c60dcf6a57d6749cba7d/8.0/alpine3.13/cli/docker-php-ext-install // docker-library 直接查看相关文件内容  输入 docker-php-ext-install -h 再次查看该命令用法【下面输入中,第一个扩展就是bcmath, 因为顺序按照英文字母顺序输出】,其实上面的shell脚本内容中已经有说明,  结合自身需求,输入命令如下: docker-php-ext-install bcmath   上面有一些信息值得关注,接下来执行输出的提示 make test  同时可以看到新增的配置文件 /usr/local/etc/php/conf.d 目录下  5. 重启容器 docker restart 容器ID/容器名 或者直接通过desktop App点击重启按钮操作均可  6. 进入容器, 并查看扩展是否开启 docker exec -it 容器ID bin/bash
php -m  可以看到一切开启扩展~~ Over 然后继续任务测试~  后连续执行单独运分别行三次 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, 生成器下内存没有变化~ 测试正常运行~ |
还没有评论,来说两句吧...