镜像站点 · 本页由第三方 GitHub 只读镜像提供,非 GitHub 官方站点,不接受任何登录或凭据输入。前往 github.com
Skip to content

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

Description

@vencakrecl

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/php@8.4/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.

Activity

  1. self-assigned this
    on Oct 6, 2026
  2. added
    maintainer investigatingThis ticket is being investigated by maintainers. Please check with us before contributing PRs etc!
    enhancementNew feature or request
    on Oct 6, 2026
  3. added theissue type on Oct 6, 2026
  4. added this to the 1.6.0 milestone on Oct 6, 2026
  5. asgrim commented on Oct 6, 2026

    @asgrim
    Contributor

    Thanks for the report, confirmed I see the same (well, similar - my M1 Mac seems to be a little faster)

    OSX

    Processes started: 925 in 18.52s
      php: 114 in 14.57s (127.8ms avg)
      pkg-config: 810 in 3.94s (4.9ms avg)
      php-config: 1 in 0.01s (7.2ms avg)
    

    Linux

    Processes started: 926 in 4.72s
      pkg-config: 810 in 2.74s (3.4ms avg)
      php: 115 in 1.98s (17.2ms avg)
      php-config: 1 in 0.00s (3.5ms avg)
    

    I'll look into some performance improvements. I did notice the PR, but a stateful VO isn't really an ideal solution here. I'll dig into this, thank you

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestmaintainer investigatingThis ticket is being investigated by maintainers. Please check with us before contributing PRs etc!

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions