Documentation forSolarWinds Observability

Code Profiling for PHP

Code profiling provides extra insight into code level execution time that is otherwise not captured by auto-instrumentation. See Code profiling for general information.

Profiling is available for traces that were started automatically and those that were started from custom SDK. The granularity used for collecting profiling information with the PHP Library is based on the profiling interval. The default interval is 20ms and is configurable in profiler settings. Traces with a duration shorter than the configured profiling interval may not be profiled. The profiling information collected includes (when available) the PHP class name, method or function name, file name and line number. Calls into native PHP code will not have a file name and line number.

Troubleshooting PHP code profiling

Why don't all traces have profiling information?

Code profiling is disabled by default. To enable code profiling, set the solarwinds-apm.enable_profiling INI directive. See Enable code profiling.

Traces with a duration shorter than the configured profiling interval (the default is 20ms) might not have profiling information.

The PHP Library has experimental support for multi-threaded PHP, which only profiles up to 10 concurrent threads. If there are more than 10 threads running, some of the threads will not be profiled. For example, if PHP is running under an Apache MPM worker with more than 10 request workers, traces from only 10 of the workers will have profiling information.

What is the "Unknown" path shown in the profiles?

"Unknown" accounts for occasions where the library failed to obtain snapshots on the given interval. This can happen with a long running request where the maximum number of snapshots (3,000 snapshots) is reached and the library stops collecting snapshots.