Performance Optimization: Tuning PHP-FPM and opcache pools for high-concurrency ActiveCampaign automation API handlers
Understanding PHP-FPM and Opcache for API Handlers
When building high-concurrency API handlers for platforms like ActiveCampaign within a WordPress environment, optimizing the underlying PHP execution stack is paramount. This involves fine-tuning PHP-FPM (FastCGI Process Manager) and OPcache. PHP-FPM manages the worker processes that handle incoming PHP requests, while OPcache compiles and caches PHP bytecode, significantly reducing the overhead of parsing and compiling scripts on every request.
Tuning PHP-FPM Pools
PHP-FPM’s performance is heavily influenced by its pool configuration. The primary goal is to match the number of worker processes to your server’s available resources (CPU cores, RAM) and the expected concurrency of your API requests. For ActiveCampaign API handlers, which might experience bursts of activity, a dynamic process management approach is often best.
Dynamic Process Management (`pm = dynamic`)
The `dynamic` process manager allows PHP-FPM to scale the number of worker processes based on demand. This is generally more efficient than `static` for variable workloads.
Here’s a sample configuration snippet for a PHP-FPM pool, typically found in /etc/php/X.Y/fpm/pool.d/www.conf (replace X.Y with your PHP version):
; Start a new pool [activecampaign_api] ; The user and group that will own the pool user = www-data group = www-data ; The address on which to accept FastCGI requests. ; Valid syntaxes are: ; 'ip.add.re.ss:port' - to accept on a specific IPv4 address and port. ; '[ipv6.ad.dr.es]:port' - to accept on a specific IPv6 address and port. ; 'unix:/path/to/socket' - to accept on a domain socket. ; Note: This value is mandatory. listen = /run/php/phpX.Y-fpm.sock ; Adjust path as per your system ; Set to 'no' for Apache mod_php, 'on' for PHP-FPM listen.owner = www-data listen.group = www-data listen.mode = 0660 ; Choose how the process manager (pm) will control the number of child processes. ; Possible values: 'static', 'dynamic', 'ondemand'. pm = dynamic ; If pm is 'dynamic', these are the intervals for the pm manager. ; Number of child processes to kill if idle. pm.max_requests = 500 ; Restart processes after 500 requests to prevent memory leaks ; The minimum number of processes that should be available at all times. pm.min_spare_servers = 5 ; The maximum number of processes that should be available at all times. pm.max_spare_servers = 10 ; The desired maximum number of simultaneously connected clients. ; This is the equivalent of the ApacheMaxClients directive. ; Set this to a value that is not higher than your server's RAM capacity. ; A good starting point is (total RAM in MB) / (average process size in MB). ; For a 4GB RAM server, and assuming each PHP process takes ~30MB, this could be around 100-120. ; For high-concurrency API handlers, you might need to increase this. pm.max_children = 100 ; The number of child processes to be created when pm is 'ondemand'. ; pm.max_children = 5 ; The number of seconds after which a child process will be killed if not busy. ; pm.process_idle_timeout = 10s ; The maximum number of execution time for a single script. ; For API calls, especially those involving external services like ActiveCampaign, ; a longer timeout might be necessary. request_terminate_timeout = 60s ; Set to 'on' if you want to use CPU affinity to assign processes to specific cores. ; This can improve performance on multi-core systems by reducing context switching. ; pm.affinity.enable = no ; Set to 'on' if you want to use CPU affinity to assign processes to specific cores. ; This can improve performance on multi-core systems by reducing context switching. ; pm.affinity.enable = no
Key Parameters Explained:
pm.max_requests: Setting this to a reasonable number (e.g., 500-1000) helps mitigate memory leaks by periodically respawning worker processes.pm.min_spare_serversandpm.max_spare_servers: These control the range of idle worker processes. Adjust based on your expected load. More spare servers mean faster response times for new requests but consume more RAM.pm.max_children: This is the most critical setting for concurrency. It defines the absolute maximum number of PHP processes that can run simultaneously. Over-allocating this will lead to the OOM killer terminating processes, causing instability. Under-allocating will result in requests being queued or rejected. For high-concurrency API handlers, this value should be significantly higher than for a typical WordPress site. A good starting point is to monitor your server’s RAM usage and the number of active PHP-FPM processes under load.request_terminate_timeout: Crucial for API calls that might take longer to process, especially when interacting with external services. Ensure this is long enough to avoid premature termination of valid API requests.
Monitoring and Adjusting
After applying changes, restart PHP-FPM (e.g., sudo systemctl restart phpX.Y-fpm). Monitor your server’s CPU and RAM usage, as well as the number of active PHP-FPM processes. Tools like htop, top, and PHP-FPM’s status page (if enabled) are invaluable.
# Enable the status page (add to your pool config)
; pm.status_path = /status
# Then, configure your web server (e.g., Nginx) to access it
# Example Nginx configuration snippet:
# location ~ ^/status(/.*)?$ {
# access_log off;
# include fastcgi_params;
# fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# fastcgi_param PATH_INFO $1;
# fastcgi_index index.php;
# fastcgi_pass unix:/run/php/phpX.Y-fpm.sock; # Match your listen directive
# }
The status page provides metrics like the number of active processes, idle processes, and requests per second, which are essential for tuning pm.max_children and the spare server settings.
Optimizing OPcache
OPcache stores precompiled script bytecode in shared memory, eliminating the need for PHP to load and parse scripts on every request. This is a massive performance booster, especially for frequently accessed files like WordPress core, plugins, and theme files.
Key OPcache Configuration Directives
These settings are typically found in your php.ini file (or a dedicated opcache.ini file). Ensure OPcache is enabled:
; Enable the OPcache extension zend_extension=opcache ; Whether to enable the OPcache extension opcache.enable=1 ; Whether to enable the OPcache extension for the CLI version of PHP opcache.enable_cli=1 ; The location of the OPcache shared memory storage. ; If this is not set, then the default value is used. ; opcache.memory_consumption=128 ; Default is 64MB. Increase for larger sites/more plugins. ; The maximum number of keys (cache entries) in the shared memory storage. ; This value is dependent on the number of PHP files used by your application. ; For a typical WordPress site with many plugins, this needs to be substantial. ; A good starting point is 10000 for a small site, 20000-50000 for larger sites. ; For high-concurrency API handlers, consider 50000 or more. opcache.max_accelerated_files=10000 ; How often (in seconds) to check for updated script files. ; Setting this to 0 means OPcache will never check for updated files. ; This is ideal for production environments where code is deployed manually or via CI/CD. ; For development, you might set this lower (e.g., 2 seconds). opcache.revalidate_freq=0 ; Whether to validate timestamps for script files. ; If this is enabled, OPcache will check the timestamp of the script on every request. ; This is useful for development but detrimental to performance in production. ; Set to 0 for production. opcache.validate_timestamps=0 ; Whether to save error messages on invalid script file access. opcache.save_comments=1 ; Whether to store the comments (docblocks) in shared memory. ; This is useful for tools that inspect docblocks, but can increase memory usage. ; Set to 0 if not needed. opcache.load_comments=1 ; The OPcache error log file. ; opcache.error_log=/var/log/php/opcache.log ; Whether to enable OPcache's built-in session garbage collector. ; opcache.interned_strings_buffer=16 ; Default is 4MB. Increase if you have many strings. ; The OPcache interned strings buffer size in megabytes. ; opcache.interned_strings_buffer=16 ; The OPcache interned strings buffer size in megabytes. ; opcache.interned_strings_buffer=16 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ; Enable OPcache's built-in session garbage collector. ; opcache.use_zval_shutdown=0 ;