6bba0b59fc
Opening a repository lists index/, which holds one file per pack. StorageBackend::list() checked every entry with is_dir(), and on a remote storage each check is a round trip. Over SFTP to a Hetzner Storage Box (33 ms) with a 60 GiB repository, occ backup:run (30 s steps) spent nearly every step on these requests and uploaded 45 KiB/s; with this change it uploads 5.8 MB/s. The cost grows with the number of packs. index/, snapshots/, catalog/ and trash/info/ only ever hold objects: list them with the new IBackend::listFiles(), one listing without per-entry checks.
16 lines
425 B
PHP
16 lines
425 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
require __DIR__ . '/../vendor/autoload.php';
|
|
|
|
// nextcloud/ocp ships the public interfaces without an autoloader; tests that mock them need one.
|
|
spl_autoload_register(static function (string $class): void {
|
|
if (str_starts_with($class, 'OCP\\')) {
|
|
$file = __DIR__ . '/../vendor/nextcloud/ocp/' . str_replace('\\', '/', $class) . '.php';
|
|
if (is_file($file)) {
|
|
require $file;
|
|
}
|
|
}
|
|
});
|