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:----j3hoDRHFpgD+tJ5nr3V65lGig+09JxrcvMnOM0QSVbiWBNDMZZSZUeHWGz/pfWJnE6WQQuAK+vo6unBDo+IH7grkP6lbOH9c08+3egGcQIYSkoEbS4OzFNXz7T74rwf0rN0wM0rCWPaSF4Id3pRsVHPxBDL/vwaCc3biz//HmPlXipahMWWWs73ylXxdWqwRVHc3AdD11ydvtDwRPVOhr3/F0wQji3GzWLJviexMIffNwZM8munHk5dFlPLd0vTr0Bqtgc0BgRjRpJQN9HaGpe82e4I3VsY5hO963EMqmVb6svwBfnFDIqz9tdU2vt/rzaZ8Hcg2ZFwXQtpB+R6xfXKKcu2/Kvx19Fa5cYBhRq0DaijDQGQtBl9xyra8n87a1bWxA2jZKsCQ0DiEP0LpuYTSyV1PH+JwwLvkMQbnq0LEoO2GI7D+RWpHN2RZyByAgBzfn4Il9TSKFjvzSwq1Eb6IkVctwGvKBkGTF++G3yh07IONLFiDoAJclz/US0Hnyw5DIrbtBo2S5QrS2P4m0LOoe57KC45yITQUDlk7Z2xqzXK2fteBTgsjhGGhA5p5LVJABA8udEWZNu87Gb3hJTDcrCGZIMZiLZ2F9SVSr1HT43G3tabywjJU1T7jqaFW2ovDnsPqoDfOK/Su6aXhg5jkTdIv9qr/8S9fFo4Ob3Q=----ATTACHMENT:----MTg5Njc4NjkzMTk3NTUxMSAyNDg3MzQzNDgyODgwNzcxIDU3NzgwMTA5MjAzMTUzOA==