Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Slow no-op installs on macOS: repeated PHP and pkg-config subprocesses

已关闭
#758 1 条评论 0 个 reaction 已指派 1 人 在 GitHub 查看

维护者通常 1 天内回复

@asgrim 已经在做这个了。

开始于 2026年10月6日。

  • #762 来自 @asgrim —— 未关闭

评估

难度
4/5
预计耗时
3-5 天
新手友好度
52/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
活跃
技术栈
php
领域
performance

调研方向

Start by tracing Php\Pie\Util\Process::run() and the PHP-installation and dependency queries it serves; the issue names no source files or tests, so first locate those call sites and relevant tests. Reproduce with the supplied pie install command and profile repeated PHP and pkg-config invocations. Done means already-installed extensions are still verified correctly with redundant query results reused within one invocation and runtime reduced.

由索引模型根据 Issue 内容生成。

描述

enhancement maintainer investigating

What are you trying to do?

Run pie install for seven already-installed extensions. All extensions are verified successfully; nothing is compiled or updated.

What platform, and PIE version are you using?

  • PIE 1.5.1
  • Homebrew PHP 8.4.26, NTS, ARM64 on both platforms
  • macOS 27.0.1 (26A434), compared with Linux ARM64

Steps to reproduce the issue

With the extensions already installed, invoke PIE directly on macOS:

/usr/bin/time /opt/homebrew/opt/[email protected]/bin/php /opt/homebrew/bin/pie install \
  apcu/apcu mongodb/mongodb-extension pecl/pcov phpredis/phpredis \
  noisebynorthwest/php-spx --with-zlib-dir=/opt/homebrew/opt/zlib \
  xdebug/xdebug bsn4/grpc

What do you expect to happen?

Verification of already-installed extensions should complete quickly, avoiding repeated identical queries of the PHP installation and system dependencies.

What is actually happening?

The direct macOS invocation takes 46.19 seconds:

46.19 real    36.34 user    7.65 sys

An equivalent verbose Linux run takes 8.44 seconds (3.47 seconds user, 1.33 seconds system). A verbose macOS run takes 47.95 seconds (37.24 seconds user, 8.10 seconds system).

Logs/output

The direct macOS run reports:

PIE 1.5.1
You are running PHP 8.4.26
Target PHP installation: 8.4.26 nts, on Linux/OSX/etc arm64
Found package: apcu/apcu:v5.1.28 which provides ext-apcu
Found package: mongodb/mongodb-extension:2.5.3 which provides ext-mongodb
Found package: pecl/pcov:v1.0.12 which provides ext-pcov
Found package: phpredis/phpredis:6.3.0 which provides ext-redis
Found package: noisebynorthwest/php-spx:v0.4.22 which provides ext-spx
Found package: xdebug/xdebug:3.5.3 which provides ext-xdebug
Found package: bsn4/grpc:v0.4.0 which provides ext-grpc
✅ PIE package apcu/apcu (apcu) is already installed and verified.
✅ PIE package bsn4/grpc (grpc) is already installed and verified.
✅ PIE package mongodb/mongodb-extension (mongodb) is already installed and verified.
✅ PIE package noisebynorthwest/php-spx (spx) is already installed and verified.
✅ PIE package pecl/pcov (pcov) is already installed and verified.
✅ PIE package phpredis/phpredis (redis) is already installed and verified.
✅ PIE package xdebug/xdebug (xdebug) is already installed and verified.

Anything else?

Timing Php\Pie\Util\Process::run() in a temporary copy of the installed PHAR, using microtime(true) around each invocation and logging the command and elapsed time in a finally block, produced a similar total runtime of 46.81 seconds:

Subprocess Calls Cumulative elapsed time
PHP 114 35.84 s
pkg-config 810 8.88 s
php-config 1 0.01 s

PHP invocations included 47 full-version queries, 30 loaded-extension queries, 13 major/minor-version queries, and 11 php -i calls.

Normal PHP startup on this Mac takes approximately 0.31 seconds per launch. Disabling Xdebug did not improve the overall runtime (48.90 seconds). Removing MongoDB's INI from a temporary configuration reduced PHP startup from approximately 0.317 to 0.167 seconds, but was only used to measure startup, not to run installation verification.

The subprocess measurements identify where the macOS run spends its time; equivalent subprocess profiling has not been performed on Linux, so the underlying platform difference is not established.

Could PHP installation information and dependency query results be cached within a single PIE invocation? Repeated subprocess calls appear to amplify startup overhead substantially for already-installed extensions.

主要语言
PHP
星标
2k
派生
75
平均合并
19 小时
30 天内合并 PR
16

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

php/pie 的其他 Issue

查看 php/pie 的全部 Issue

相似的 Issue

更多 PHP Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。