OpenTelemetry in PHP, and auto-instrumentation that was not

The PHP SDK reached 1.0 this year and the auto-instrumentation is thinner than the equivalent in other runtimes.

what is instrumented automatically, with the extension:
  PDO, curl, a few framework entry points

what is not, and needs manual spans:
  the queue worker's job boundary
  a cache read
  anything in our own domain code

which means: the trace shows a 900ms request with a 40ms
database call and an 860ms gap.

The gap is the whole problem — a trace that shows the boundaries and nothing between them is a slower way of reading a timer. Adding spans manually at four points in the request lifecycle produced something useful; the honest assessment is that this is a year or two behind the equivalent tooling elsewhere, and the sampling decision matters more here because each span costs.