Slow no-op installs on macOS: repeated PHP and pkg-config subprocesses
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 52/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- php
- Ambito
- performance
Direzione di ricerca
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.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- PHP
- Stelle
- 2k
- Fork
- 74
- Merge medio
- 6h 35m
- PR unite (30g)
- 12
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di php/pie
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 38/100
I maintainer di solito rispondono entro 1 giorno
-
Do not duplicate an ext in pie show output for dev versionsForse già presa @asgrim l’ha presa 8 giorni fa. Apertaenhancement maintainer investigating
php/pie#746 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Add self-update feature for executable PIEsForse già presa @asgrim l’ha presa 19 giorni fa. Apertaenhancement maintainer investigating
php/pie#739 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Allow building from existing sources on diskForse già presa @asgrim l’ha presa 19 giorni fa. Apertaenhancement maintainer investigating
php/pie#738 · 2 commenti · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Optionally remove build-only dependencies and bloat after installForse di nuovo libera @asgrim l’ha presa 140 giorni fa e non c’è nessuna pull request aperta. Apertaenhancement maintainer investigating
php/pie#618 · 2 commenti · 4 reazioni · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
Issue simili
-
product / databases
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
VilnaCRM-Org/user-service#525 ·
I maintainer di solito rispondono entro 21 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
shukiv/jabali-panel#2029 ·
I maintainer di solito rispondono entro 1 giorno
-
area:pool-types good first issue priority:low type:bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
crazy-goat/php-fpm-ng#822 ·
I maintainer di solito rispondono entro 1 giorno
-
agentic bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
MagnaCapax/PMSS#1023 · 1 commento ·
I maintainer di solito rispondono entro 5 giorni