Read files for a backup in pieces of 4 MiB instead of 8 KiB

PHP reads a file 8 KiB at a time by default. On a disk where every
request waits, such as a network or cloud volume, that made reading five
times slower: on the test server 5 MiB/s instead of 27 MiB/s. Without
PHP's read buffer every read of a blob is one request to the disk. The
same for packs on a local location.
This commit is contained in:
2026-11-07 12:44:57 +01:00
parent 569077fa69
commit 953312bf44
5 changed files with 28 additions and 3 deletions
+1 -1
View File
@@ -120,7 +120,7 @@ final class BackupRun {
if ($cur === null || $cur['path'] !== $logical) {
$cur = ['path' => $logical, 'offset' => 0, 'blobs' => [], 'version' => $version];
}
$fh = @fopen($path, 'rb');
$fh = Repository::openForReading($path);
if ($fh === false) {
self::recordUnreadable($state, $stats, $logical);
$state['cur'] = null;