Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

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

Abierto
#758 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
52/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
php
Área
performance

Línea de trabajo

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.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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.

Lenguaje dominante
PHP
Estrellas
2k
Forks
74
Merge medio
6 h 35 min
PR fusionados (30 d)
12

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de php/pie

Todos los issues de php/pie

Issues similares

Más issues de PHP

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.