summaryrefslogtreecommitdiffstats
path: root/apps/dav/lib/Server.php
diff options
context:
space:
mode:
authorCarl Schwan <carl@carlschwan.eu>2022-01-19 23:30:34 +0100
committerCarl Schwan <carl@carlschwan.eu>2022-04-04 10:28:26 +0200
commit7d272c54d013538746d6731097ec37f360effb5d (patch)
treed754c4184926ea8011bd2b0fe276adebaf4082f6 /apps/dav/lib/Server.php
parentcf4c77e064fd52d891bc842d78431cceb2f34952 (diff)
downloadnextcloud-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.php31
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 {