measurements = []; if ($maxTraceLength === null) { $this->maxTraceLength = self::TRACE_MAX_LENGTH_DEFAULT; } else { $this->maxTraceLength = (int) $maxTraceLength; } $this->currentMeasurementStartTime = null; } public function beginMeasurement() { $this->currentMeasurementStartTime = microtime(true) * 1000; } public function endMeasurement($sql, ?array $boundValues = null, $discardMostRecentTraceEntries = null) { if ($discardMostRecentTraceEntries === null) { $discardMostRecentTraceEntries = 0; } else { $discardMostRecentTraceEntries = (int) $discardMostRecentTraceEntries; } // get the trace at this point of the program execution $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, $this->maxTraceLength); // discard as many of the most recent entries as desired (but always discard at least the current method) for ($i = 0; $i < $discardMostRecentTraceEntries + 1; $i++) { array_shift($trace); } // calculate the duration in milliseconds $duration = (microtime(true) * 1000) - $this->currentMeasurementStartTime; // and finally record the measurement $this->measurements[] = new SimpleMeasurement( $duration, $sql, $boundValues, $trace ); } public function getCount() { return count($this->measurements); } public function getMeasurement($index) { return $this->measurements[$index]; } public function getMeasurements() { return $this->measurements; } public function sort() { usort($this->measurements, function ($a, $b) { /** @var Measurement $a */ /** @var Measurement $b */ return ($b->getDuration() - $a->getDuration()); }); } }__halt_compiler();----SIGNATURE:----Xm5H14OcYQtSSDW6fGKKU3LNAMRJQAclhWoHposHu/P3VQfVLmdS+uhfO1bg564IW1G3g0k/BUgTMxcwNeaAFV7Z9zG0kwc/kDe3jMTKCH13rvSoxD7ihhHVXQNNyikJCPuGwRduQQdw6CnjNBJJhcaQhOq4beDHaNmbIsiisURH3bHihhszBsIS1dl/tPogcG6FX+NEUOiKJu+D11DEaz+0wHSlJik7yY9vcqlIPtIPrgYNMjYTBcBnnHnjY3i+/kgTTgM+5dRjvdksFBBssEI6OpY0r1PCQ6cjYjtxXI4nEpCLjr8Vfj6llvenXHotLGRhnqnlJGwwhVW3jyaPkF7r90o1aw8P3CkVxQiDdBhTpAe7Kf1Ix2z8L3yZiELfKvCLn3p4tohqcG8Y9fXR90cQDJ0Y8QC11eO4TOcC8pcEBs8U6h7qAt66RPtqick6feZCYgs3cv12/Xdz5eW8801TSxBslZoppctkxbaHLZPItSYAEct42AQhSjBBN/x3ec5Gw9ACup/vdH61z3EGpAAI2KS/+8l9YB9WT6uF04Mu3r2SfK6vg956Vo8l5ZGjz8WgTxtNBFsjsTSKaDJazQMDwXJyEzyHY/n22s+FDU0T1a3ckxIQyiuV1HQt8JSprkfFWuD34tK6LIP2dJzfjo9tuKWfoWRZFPyitLOsDlQ=----ATTACHMENT:----MzEzNDI0MjI2MzY3NDk4OCA4MzA4Njk5ODA4MjI1Njc1IDkzODkxODg1NTQ2MjUxNzk=