diff options
author | Carl Schwan <carl@carlschwan.eu> | 2022-01-19 23:30:34 +0100 |
---|---|---|
committer | Carl Schwan <carl@carlschwan.eu> | 2022-04-04 10:28:26 +0200 |
commit | 7d272c54d013538746d6731097ec37f360effb5d (patch) | |
tree | d754c4184926ea8011bd2b0fe276adebaf4082f6 /apps/dav/lib/Server.php | |
parent | cf4c77e064fd52d891bc842d78431cceb2f34952 (diff) | |
download | nextcloud-server-7d272c54d013538746d6731097ec37f360effb5d.tar.gz nextcloud-server-7d272c54d013538746d6731097ec37f360effb5d.zip |
Add a built-in profiler inside Nextcloud
The webui is provided by a seperate application named profiler
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Diffstat (limited to 'apps/dav/lib/Server.php')
-rw-r--r-- | apps/dav/lib/Server.php | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/apps/dav/lib/Server.php b/apps/dav/lib/Server.php index 759d39c0233..ff64da2a238 100644 --- a/apps/dav/lib/Server.php +++ b/apps/dav/lib/Server.php @@ -36,6 +36,9 @@ namespace OCA\DAV; use OCA\DAV\Connector\Sabre\RequestIdHeaderPlugin; use OCP\Diagnostics\IEventLogger; +use OCP\Profiler\IProfiler; +use OCA\DAV\Profiler\ProfilerPlugin; +use OCP\AppFramework\Http\Response; use Psr\Log\LoggerInterface; use OCA\DAV\AppInfo\PluginManager; use OCA\DAV\CalDAV\BirthdayService; @@ -78,17 +81,19 @@ use Sabre\DAV\UUIDUtil; use SearchDAV\DAV\SearchPlugin; class Server { + private IRequest $request; + private string $baseUri; + public Connector\Sabre\Server $server; + private IProfiler $profiler; + + public function __construct(IRequest $request, string $baseUri) { + $this->profiler = \OC::$server->get(IProfiler::class); + if ($this->profiler->isEnabled()) { + /** @var IEventLogger $eventLogger */ + $eventLogger = \OC::$server->get(IEventLogger::class); + $eventLogger->start('runtime', 'DAV Runtime'); + } - /** @var IRequest */ - private $request; - - /** @var string */ - private $baseUri; - - /** @var Connector\Sabre\Server */ - public $server; - - public function __construct(IRequest $request, $baseUri) { $this->request = $request; $this->baseUri = $baseUri; $logger = \OC::$server->getLogger(); @@ -115,6 +120,7 @@ class Server { $this->server->httpRequest->setUrl($this->request->getRequestUri()); $this->server->setBaseUri($this->baseUri); + $this->server->addPlugin(new ProfilerPlugin($this->request)); $this->server->addPlugin(new BlockLegacyClientPlugin(\OC::$server->getConfig())); $this->server->addPlugin(new AnonymousOptionsPlugin()); $authPlugin = new Plugin(); @@ -343,6 +349,11 @@ class Server { $eventLogger->start('dav_server_exec', ''); $this->server->exec(); $eventLogger->end('dav_server_exec'); + if ($this->profiler->isEnabled()) { + $eventLogger->end('runtime'); + $profile = $this->profiler->collect(\OC::$server->get(IRequest::class), new Response()); + $this->profiler->saveProfile($profile); + } } private function requestIsForSubtree(array $subTrees): bool { |