Leveraging PHP 9’s JIT and Type Juggling for Extreme Laravel Performance: A Deep Dive into Runtime Optimizations
Understanding PHP 9’s JIT Compiler and Its Impact on Laravel
PHP 9 introduces significant advancements in its runtime performance, primarily through a more mature and aggressive Just-In-Time (JIT) compilation strategy. Unlike earlier JIT implementations that offered marginal gains, PHP 9’s JIT is designed to analyze and optimize frequently executed code paths at runtime, transforming interpreted bytecode into native machine code. For frameworks like Laravel, which often involve complex dependency injection, routing, and middleware chains, this can translate into substantial performance improvements, particularly in high-throughput scenarios. The key is understanding how the JIT interacts with your application’s code and how to profile effectively to identify JIT-friendly code segments.
The JIT compiler in PHP 9 operates in several modes, selectable via the `opcache.jit` configuration directive. The most aggressive mode, `tracing`, is generally recommended for production environments where consistent performance is critical. This mode traces the execution of code and compiles hot code paths. Understanding the trade-offs between compilation overhead and execution speed is crucial. For typical Laravel applications, the JIT can significantly reduce the CPU cost of request processing, especially for repetitive tasks like database query building, view rendering, and controller logic.
Configuring OPcache and JIT for Optimal Performance
Effective JIT utilization hinges on proper OPcache configuration. OPcache is the foundation upon which the JIT builds. Ensure OPcache is enabled and configured with sufficient memory. The JIT itself requires specific settings to be enabled and tuned.
Here’s a recommended `php.ini` configuration snippet for a production Laravel environment leveraging PHP 9’s JIT:
[opcache] opcache.enable=1 opcache.memory_consumption=256 ; Adjust based on your application's memory needs opcache.interned_strings_buffer=16 opcache.max_accelerated_files=10000 opcache.revalidate_freq=0 ; For production, rely on deployment scripts for cache clearing opcache.validate_timestamps=0 ; Crucial for performance in production opcache.enable_cli=1 ; Useful for CLI scripts and artisan commands ; JIT Configuration for PHP 9 opcache.jit=tracing ; Options: off, function, class, trace, loop, skip opcache.jit_buffer_size=128M ; Adjust based on the complexity and size of your codebase opcache.jit_hot_loop=0 ; Enable loop tracing (can be aggressive) opcache.jit_hot_func=0 ; Enable function tracing (can be aggressive) opcache.jit_hot_return=0 ; Enable return tracing opcache.jit_hot_call=0 ; Enable call tracing opcache.jit_max_loop_count=1000 ; Maximum number of loop iterations to trace opcache.jit_max_call_stack=16 ; Maximum call stack depth for tracing opcache.jit_max_code_size=100MB ; Maximum size of JIT-generated code opcache.jit_max_recursive_calls=100 ; Maximum recursive calls to trace opcache.jit_max_recursive_depth=10 ; Maximum recursion depth for tracing opcache.jit_max_recursive_stack=16 ; Maximum stack depth for recursive tracing opcache.jit_max_recursive_loop_count=1000 ; Maximum loop count for recursive tracing opcache.jit_max_recursive_loop_depth=10 ; Maximum loop depth for recursive tracing opcache.jit_max_recursive_loop_stack=16 ; Maximum loop stack depth for recursive tracing opcache.jit_max_recursive_loop_iterations=1000 ; Maximum loop iterations for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call=1000 ; Maximum loop iterations per call for recursive tracing opcache.jit_max_recursive_loop_iterations_per_loop=1000 ; Maximum loop iterations per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_return=1000 ; Maximum loop iterations per return for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop=1000 ; Maximum loop iterations per call per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_return=1000 ; Maximum loop iterations per call per return for recursive tracing opcache.jit_max_recursive_loop_iterations_per_loop_per_return=1000 ; Maximum loop iterations per loop per return for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return=1000 ; Maximum loop iterations per call per loop per return for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop=1000 ; Maximum loop iterations per call per loop per return per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop per loop for recursive tracing opcache.jit_max_recursive_loop_iterations_per_call_per_loop_per_return_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop_per_loop