Slow no-op installs on macOS: repeated PHP and pkg-config subprocesses
Mantenedores costumam responder em até 1 dia
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 52/100
- Tipo de issue
- Bug
- Clareza
- Razoavelmente clara
- Status de atividade
- Ativa
- Stack de tecnologia
- php
- Domínio
- performance
Direção de pesquisa
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.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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.
- Linguagem predominante
- PHP
- Estrelas
- 2.1k
- Forks
- 76
- Merge médio
- 16h 58min
- PRs com merge (30d)
- 19
Preparar o ambiente
- Inclui um Dockerfile ou arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de php/pie
-
Retry / switch to source build on connection errorsTalvez já em andamento @asgrim assumiu há 1 dia. Abertaenhancement maintainer investigating
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 48/100
php/pie#792 · 1 comentário · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
Release asset downloads are replaced by the repository's preferred dist mirrorTalvez já em andamento @asgrim assumiu há 1 dia. Abertamaintainer investigating
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 68/100
Mantenedores costumam responder em até 1 dia
-
Investigate flaky ubi9/rocky e2e testsTalvez já em andamento @asgrim assumiu há 5 dias. Abertamaintainer investigating
Mantenedores costumam responder em até 1 dia
-
When --from-lock is used, --no-dev becomes a no-opTalvez já em andamento @asgrim assumiu há 11 dias. Abertamaintainer investigating
php/pie#778 · 2 comentários · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
Do not duplicate an ext in pie show output for dev versionsTalvez livre de novo @asgrim assumiu há 28 dias e não há nenhum pull request aberto. Abertaenhancement maintainer investigating
Mantenedores costumam responder em até 1 dia
Issues semelhantes
-
Bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 77/100
Automattic/safe-publish#764 ·
Mantenedores costumam responder em até 1 dia
-
sync-en
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
Mantenedores costumam responder em até 1 dia
-
sync-en
Dificuldade 1/5 1-3 horas Facilidade para iniciantes 84/100
Mantenedores costumam responder em até 1 dia
-
Перевод устарел
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
-
[xExtension-ImageProxy] Video poster images are not proxiedTalvez já em andamento @NopeCharon assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
FreshRSS/Extensions#561 ·
Mantenedores costumam responder em até 1 dia