Jacky's blog
首页
  • 学习笔记

    • web
    • android
    • iOS
    • vue
  • 分类
  • 标签
  • 归档
收藏
  • tool
  • algo
  • python
  • java
  • server
  • growth
  • frida
  • blog
  • SP
  • more
GitHub (opens new window)

Jack Yang

编程; 随笔
首页
  • 学习笔记

    • web
    • android
    • iOS
    • vue
  • 分类
  • 标签
  • 归档
收藏
  • tool
  • algo
  • python
  • java
  • server
  • growth
  • frida
  • blog
  • SP
  • more
GitHub (opens new window)
  • web
  • web concept
  • javascript

  • css

  • vue

  • react

  • nextjs

  • module

  • web faq
  • web3

  • more

    • 一行代码"黑"掉任意网站
    • 批量打开网站
    • 启动express服务
    • nodejs中的http请求
    • blob url
    • php
      • misc
      • package
      • env
        • plugin
      • FAQ
        • php 项目运行不需要编译吗?
        • debug php project
      • link
    • session and cookie
    • prettier
  • 《web》
  • more
Jacky
2024-05-26
目录

php

PHP (Hypertext Preprocessor)超文本预处理器, is a versatile and widely used server-side scripting language for creating dynamic and interactive web applications.

# misc

  • php-fpm

# package

Composer 是 PHP 的依赖管理工具.

# env

link:

  • https://blog.csdn.net/qq_44803335/article/details/108806851 (opens new window)
  • Visual Studio Code +PHP 开发 推荐插件 (opens new window)

# plugin

  • PHP Intelephense
    • 超好用 php 智能代码提示器,支付代码提示、查找定义、类搜索等功能,非常强大
  • PHP 接口注释插件
    • 安装好后可以使用 "/**" 快捷键 + Tab 自动生成接口和文档注释,用于函数,类的快速注释 更多配置可以参考插件说明
  • PHP debug 插件 调试器
    • 此插件需要安装 php-xdebug 并配置,之后才可正常使用
  • php intellisense
    • php 代码自动完成插件
  • PHP Namespace Resolver
    • 命名空间 的快速引入, 选中类,按 ctrl+alt+I
  • Code Spell Checker
    • 单词拼写检查插件,只要你的单词拼写错误就会在错误单词下有个波浪线提示,避免错误的命名非常好用
  • code runner
    • 可以直接在编辑器中运行代码,查看结果,非常方便,一键运行
  • PHP Server
    • 服务插件

# FAQ

# php 项目运行不需要编译吗?

PHP 项目在运行时不需要像 C、C++ 或 Java 那样进行显式的编译。PHP 是一种解释型语言,这意味着它的代码在运行时由 PHP 解释器逐行解释和执行。然而,PHP 的解释器会在执行过程中对代码进行一些内部的编译和优化


解释型语言的工作原理
  1. 脚本解析:
  • 当你访问一个 PHP 页面时,PHP 解释器会读取 PHP 文件的内容
  1. 语法解析:
  • 解释器会解析代码,检查语法错误,并将代码转换成一系列的中间表示(通常称为抽象语法树,AST)
  1. 编译到字节码:
  • 解释器将 AST 编译成一种中间字节码(Opcode),这是解释器内部使用的一种低级表示形式
  1. 执行:
  • 解释器会执行生成的字节码,生成最终的输出(如 HTML 页面)

不需要显式编译的优点:

  • 快速开发迭代: 由于不需要显式编译步骤,开发者可以快速进行代码修改和测试,适合快速迭代和开发
  • 简化部署: 部署 PHP 项目时,只需将 PHP 文件上传到服务器,无需额外的编译步骤

性能优化

尽管 PHP 是解释型语言,仍然有一些工具和技术可以用来优化 PHP 项目的性能:

  1. OPcache:
  • PHP 提供了 OPcache 扩展,它可以将 PHP 字节码缓存在内存中,避免每次请求时重新解析和编译。启用 OPcache 后,PHP 代码的执行速度会显著提高
; php.ini 文件中启用 OPcache
zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=2
1
2
3
4
5
6
7
  1. 代码优化:
  • 编写高效的代码,避免不必要的计算和重复操作
  • 使用高效的数据结构和算法
  1. 缓存:
  • 使用各种缓存机制(如数据库缓存、文件缓存、APCu)来减少重复计算和数据库查询
  1. 框架和工具:
  • 使用性能优化良好的框架和库,例如 Symfony、Laravel,它们内置了许多优化和缓存机制

编译型 vs. 解释型

与编译型语言不同,解释型语言不需要显式的编译步骤,但这并不意味着它们不进行任何形式的编译。解释型语言的编译过程在运行时由解释器处理,这使得开发和调试更加灵活和高效


小结: PHP 项目在运行时不需要显式编译,PHP 解释器会在运行时解析和执行代码。尽管不需要显式编译,PHP 仍然有许多方法可以优化性能,例如使用 OPcache 和其他缓存机制。这种特性使得 PHP 非常适合快速开发和迭代

# debug php project

要调试 PHP 代码并使用 Xdebug,你需要确保以下几个步骤都正确配置好:

  1. 安装 Xdebug:
    • 确保你已经安装了 Xdebug。你可以通过以下命令检查是否已经安装:
php -m | grep xdebug
1

如果没有安装,可以通过以下方式安装(具体安装步骤可能因操作系统而异):

pecl install xdebug
1
  1. 配置 Xdebug:
  • 在 php.ini 文件中添加或修改 Xdebug 的配置。通常可以在 PHP 配置目录(例如 /etc/php/7.4/cli/php.ini 或 /etc/php/7.4/apache2/php.ini)中找到并编辑 php.ini 文件。添加或修改以下配置:
  • php --ini: 查看 php ini 配置
[xdebug]
zend_extension=xdebug.so
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_host=127.0.0.1
xdebug.client_port=9003
; some path that file exist
xdebug.log=/var/log/xdebug.log
1
2
3
4
5
6
7
8
  1. 配置 IDE(例如 VSCode):
    • 使用 VSCode 并安装 PHP Debug 插件(by Felix Becker)。然后配置 launch.json 文件来监听 Xdebug
    • 创建或编辑 .vscode/launch.json:
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "port": 9003
        }
    ]
}
1
2
3
4
5
6
7
8
9
10
11
  1. 确保服务器配置正确:
    • 如果你在使用 Apache 或 Nginx 作为服务器,确保服务器重启后 Xdebug 的配置被正确加载。你可以通过创建一个包含 phpinfo() 的 PHP 文件来检查 Xdebug 是否正确启用
<?php
phpinfo();
?>
1
2
3
  1. 启动调试会话:
    • 在 VSCode 中按 F5 或点击调试按钮来启动监听,然后访问你的 PHP 页面

# link

  • php (opens new window)
    • manual-zh (opens new window)
  • php-tutorial (opens new window)
上次更新: 2025/07/17, 17:31:43
blob url
session and cookie

← blob url session and cookie→

最近更新
01
npx 使用指南
10-12
02
cursor
09-28
03
inspect
07-20
更多文章>
Theme by Vdoing | Copyright © 2019-2025 Jacky | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式