hyperf3.1使用记录

安装所需拓展

sudo apt install -y \
    php8.3-cli \
    php8.3-mysql \
    php8.3-curl \
    php8.3-gd \
    php8.3-xml \
    php8.3-dom \
    php8.3-mbstring \
    php8.3-zip \
    php8.3-bcmath \
    php8.3-intl \
    php8.3-opcache \
    php8.3-swoole

wsl1无法热重启

经过测试wsl1无法热重启
但是wsl2正常

wsl2热重启速度慢

这个主要是wsl2的io太慢,目前只能使用docker compose解决他的热重启bug
使用他已有的Dockerfile和docker-compose.yml

services:
  hyperf-api:
    container_name: hyperf-api
    build: .
    develop:
      watch:
        - action: sync
          path: ./
          target: /opt/www
          ignore:
            - vendor/
            - runtime/
        - action: rebuild
          path: composer.json
    ports:
      - 9502:9502
      - 8080:8080
    environment:
      - APP_ENV=dev
      - SCAN_CACHEABLE=false

networks:
  default:
    name: backend
    attachable: true

程序报错后进程没有退出

开发中发现,有时候写错了代码,程序error后再次启动正常,但是其实还有一个旧的程序在运行老代码

di生成的类遇到一次问题

今天wsl1环境重启后di总是无法正确生成各个类,后来删除了缓存才好了

  • 2025-12-20
    今天发生hyperf已经退出,但是存在还是没有退出的程序,导致重启后还是老的逻辑
    this->stdoutLogger->info context里的东西经常无法打印
  • 2025-12-28
    似乎是swoole的问题,安装了最新版后,wsl1环境swoole里guzzle无法联网,似乎是对curl的hook出了问题
    wsl1看起来不能再用来开发swoole,经常出问题
    改为使用docker compose watch开发目前速度还可以
  • 2025-12-29
  • windows docker desktop发生无法重启hyperf容器
  • 使用try时候应该在携程go内部,而不是外部,在go外部try是没效果的
  • 今天遇到使用hyperf guzzle时候,由于上游接口拒绝连接,不知道为何导致mysql也出问题,暂时先不管了,改回到curl,我发现hyperf的客户端是不支持connect_timeout的

     Connection pool exhausted. Cannot establish new connection before wait_timeout.

    pecl安装

  • cares会导致dns卡住
  • 那几个压缩算法要yes,否则websocket发不出去
enable sockets support? [no] :
enable openssl support? [no] : yes
enable mysqlnd support? [no] :
enable curl support? [no] : yes
enable cares support? [no] :
enable brotli support? [yes] :
enable zstd support? [no] : yes
enable PostgreSQL database support? [no] :
enable ODBC database support? [no] :
enable Oracle database support? [no] :
enable Sqlite database support? [no] :
enable swoole thread support (need php zts support)? [no] :
enable iouring for file async support? [no] :
  • 2026-01-04
    今天发现wsl2如果转为wsl1,就会导致http请求被卡死,如果返回切换会导致wsl2的请求也被卡死,换virtualbox更独立
  • 2026-01-05
    在通过跨文件系统文件夹共享开发后,io性能远不及wsl1,慢了好像3倍,但是开发还能接受
    发现hyperf无法写入日志,经过测试后发现hyperf默认的cache配置中有一个prefix => 'c:',他会在路径里加上这个东西,导致无法写入,改为其他的就好了

此处评论已关闭