Slow no-op installs on macOS: repeated PHP and pkg-config subprocesses
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 52/100
- Issue-Typ
- Bug
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- php
- Bereich
- performance
Rechercherichtung
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.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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.
- Vorherrschende Sprache
- PHP
- Sterne
- 2k
- Forks
- 74
- Ø Merge
- 6 Std. 35 Min.
- Gemergte PRs (30 T.)
- 12
Entwicklungsumgebung
- Enthält ein Dockerfile oder eine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus php/pie
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 38/100
Maintainer antworten meist innerhalb von 1 Tag
-
Do not duplicate an ext in pie show output for dev versionsEvtl. vergeben @asgrim hat das vor 8 Tagen übernommen. Offenenhancement maintainer investigating
php/pie#746 · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 1 Tag
-
Add self-update feature for executable PIEsEvtl. vergeben @asgrim hat das vor 19 Tagen übernommen. Offenenhancement maintainer investigating
php/pie#739 · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 1 Tag
-
Allow building from existing sources on diskEvtl. vergeben @asgrim hat das vor 19 Tagen übernommen. Offenenhancement maintainer investigating
php/pie#738 · 2 Kommentare · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 1 Tag
-
Optionally remove build-only dependencies and bloat after installEvtl. wieder frei @asgrim hat das vor 140 Tagen übernommen, und es ist kein Pull Request offen. Offenenhancement maintainer investigating
php/pie#618 · 2 Kommentare · 4 Reaktionen · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 1 Tag
Ähnliche Issues
-
product / databases
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
Maintainer antworten meist innerhalb von 1 Tag
-
enhancement
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
VilnaCRM-Org/user-service#525 ·
Maintainer antworten meist innerhalb von 21 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
shukiv/jabali-panel#2029 ·
Maintainer antworten meist innerhalb von 1 Tag
-
area:pool-types good first issue priority:low type:bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
crazy-goat/php-fpm-ng#822 ·
Maintainer antworten meist innerhalb von 1 Tag
-
agentic bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
MagnaCapax/PMSS#1023 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 5 Tagen