• 开启php8的JIT及时编译,超级详细 照抄即可


    开启php8的JIT及时编译

    JIT时php8的重要功能之一,可以极大的提高性能;

    JIT编译器集成在了Opcache插件中,仅在启动Opcache插件才有效

    Opcache将 PHP 脚本编译后的字节码存储到内存中,以避免每次执行脚本时重新解析和编译,从而提高 PHP 应用程序的性能和响应速度。

    Opcache开启

    php.ini文件

     将zend_extension=opcache前面的‘;’号去掉,就相当于开启了opcache

     Opcache配置

    PHP: 运行时配置 - Manual

    opcache.enable=1;opcache.enable_cli=0;opcache.memory_consumption=128;

    opcache.interned_strings_buffer=8;opcache.max_accelerated_files=10000这五个前面的;号也全部去除

    再在opcache.max_accelerated_files=10000新增下面两段配置就可以了

    1. opcache.jit=tracing
    2. opcache.jit_buffer_size=100M

    测试效果:

    1. $satrt = microtime(true);
    2. $total = 0;
    3. for($i = 0;$i<1000000;$i++){
    4. $total += $i;
    5. }
    6. echo "Count:".$i.",Total".$total."\n";
    7. $end = microtime(true);
    8. $spend = floor(($end - $satrt)*1000);
    9. echo $spend;
    10. ?>

    开启前:

    开启后:

     

     问题汇总:

    集成环境为何无效?

    php.ini配置文件修改失败,到集成环境页面的设置中打开php.ini配置文件

    如何检测是否开启JIT?

    echo "JIT is " . (ini_get('opcache.jit') ? "enabled" : "disabled") . "\n";

    打印enabled表示开启成功;打印disabled表示开启失败

    PDO链接mysql数据库

     php链接mysql数据库最常用的几种方式

    • MySQLi API:这是PHP官方提供的MySQL数据库扩展,提供了面向过程和面向对象两种编程方式
    • PDO API:这是PHP中的一个通用数据库访问层,支持多种数据库,如MySQL、Oracle、PostgreSQL等,通过一个统一的API进行访问,上手难度相对较高。
    • 第三方ORM框架:例如Laravel的Eloquent ORM和Yii Framework的ActiveRecord,这些框架使用ORM来操作数据库,让开发者可以使用面向对象的方式对数据库进行操作

    下面以PDO API为例


    安装检测:

    一般安装php环境会自带安装,可以通过phpinfo() 查看是否安装成功:

    1. echo phpinfo()
    2. ?>

    然后打开页面查看:

     第一个表明:PHP 环境中安装了 mysql 和 sqlite 两种 PDO 驱动程序,分别用于连接 MySQL 和 SQLite 数据库。

    第二个表明:PHP 环境中采用的是 mysqlnd 客户端 API,其版本为 5.0.12-dev,这是一个 MySQL 连接管理器,它支持多种 MySQL 特性

    开启连接:

    1. //数据库名
    2. $servername = "phpproj";
    3. //用户名
    4. $username = "root";
    5. //密码
    6. $password = "123456";
    7. //mysql:host=localhost =》本地连接
    8. $conn = new PDO("mysql:host=localhost;dbname=$servername",$username, $password);
    9. echo "连接成功
      "
      ;
    10. //$stmt 变量通过使用 $conn 对象的 prepare() 方法,使用 SQL 查询字符串 "select * from usertext" 准备一个 SQL 语句对象
    11. $stmt = $conn->prepare('select * from usertext');
    12. //$stmt 对象的 execute() 方法用于执行准备好的 SQL 语句,并将查询结果存储到当前的 $stmt 对象中
    13. $stmt -> execute();
    14. //fetchAll() 方法将从结果集中检索所有行,并返回包含结果集中所有行的数组。
    15. $arr = $stmt -> fetchAll();
    16. //var_dump() 函数输出 $arr 变量
    17. var_dump($arr);
    18. ?>

    问题:

    如何返回数据遇到乱码,如何处理?

    1. //在运行sql语句下增加下面一行代码
    2. $conn -> query('SET NAMES utf8');
    3. //作用:执行的是 "SET NAMES utf8" 这个查询,该查询用于设置 MySQL 连接的字符集为 utf8,以便支持存储和检索 Unicode 字符。

    php操作数据库小示例

     连接数据库

    1. $host = "localhost";
    2. $servername = "phpproj";
    3. $username = "root";
    4. $password = "123456";
    5. try {
    6. $pdo = new PDO("mysql:host=$host;dbname=$servername;charset=utf8", $username, $password);
    7. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    8. } catch (PDOException $e) {
    9. die("Error: " . $e->getMessage());
    10. }

    新增数据 

    新增一条数据

    1. XXXXXXXXXXXXXXX
    2. // 新增数据
    3. $sql1 = "INSERT INTO usertext (name, age, signature,id) VALUES ('Tom', 22, '坚持就是胜利',5)";
    4. //使用PDO的exec()方法执行SQL语句,并返回受影响的行数。在这里,由于只插入了一条数据,因此返回的值为1
    5. $pdo->exec($sql1);

     新增多条

    1. XXXXXXXXXXXXXXXXXX
    2. // 批量新增数据 以问号(?)的形式占位
    3. $sql2 = "INSERT INTO usertext (name, age, signature,id) VALUES (?, ?, ?,?)";
    4. // prepare()方法创建一个预处理语句对象,将SQL语句作为参数传入
    5. $stmt = $pdo->prepare($sql2);
    6. $data = array(
    7. array("Jack", 25, "male",6),
    8. array("Lucy", 23, "female",7),
    9. array("Mike", 21, "male",8)
    10. );
    11. // count() 用于统计数组元素的个数(即数组长度)
    12. for ($i = 0; $i < count($data); $i++) {
    13. // execute()用于执行已经准备好的SQL语句。通常与prepare()方法一起使用
    14. $stmt->execute($data[$i]);
    15. }

     删除数据

    1. XXXXXXXXXXXXXXXXX
    2. // 删除数据
    3. $sql3 = "DELETE FROM users WHERE name='Tom'";
    4. $pdo->exec($sql3);

    修改数据 

    1. XXXXXXXXXXXXXX
    2. // 修改数据
    3. $sql4 = "UPDATE usertext SET signature='闪电五连鞭' WHERE name='Lucy'";
    4. $pdo->exec($sql4);

    查询数据 

    1. XXXXXXXXXXXXXXXXXXXXXXXxx
    2. // 查询数据
    3. $sql5 = "SELECT * FROM usertext WHERE age>22 ORDER BY age ASC";
    4. $stmt = $pdo->query($sql5);
    5. // fetchAll()方法会从数据库查询结果集中获取所有行,并将它们保存为一个关联数组
    6. $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
    7. foreach ($results as $row) {
    8. echo "姓名: " . $row['name'] . ", 年龄: " . $row['age'] . ", 签名: " . $row['signature'] . "
      "
      ;
    9. }

  • 相关阅读:
    Linux进程管理
    ETCD快速入门-01 ETCD概述
    Java Date加八小时
    SSTI模板注入
    【计算机网络】应用层自定义协议
    使用CodeFirst连接Mysql
    成立 15 年的美图分享,AI 视觉大模型的核心能力是什么?
    微信小程序项目源代码SSM考勤签到管理系统
    linux生成code文件
    【WebLogic】OPatch Patches: No patches installed
  • 原文地址:https://blog.csdn.net/weixin_52479803/article/details/130904717