Провел небольшое тестирование SabreDav. Вся установка - результат чтения документации на sabre.io + немного гугления.
Сервер - практически незагруженный.
Установка:
Был заведен каталог `dav` на сервере. Там был размещен файл `.htdigest` c содержимым
Код:
foo:SabreDAV:5790c3784a79a018d1186528df520e11
Это строка дает нам пользователя `SabreDAV\foo` c паролем `bar`.
Туда же был скопирован каталог vendors из дистрибутива SabreDav
В корне сайта заведен каталог public c атрибутом 777.
в .htaccess добавлены строки
Код:
# Output buffering needs to be off, to prevent high memory usage
php_flag output_buffering off
# This is also to prevent high memory usage
php_flag always_populate_raw_post_data off
# This is almost a given, but magic quotes is *still* on on some
# linux distributions
php_flag magic_quotes_gpc off
# SabreDAV is not compatible with mbstring function overloading
php_flag mbstring.func_overload off
В корень сайта помещен файл server.php c содержимым
PHP:
<?php
use
Sabre\DAV;
// The autoloader
require 'dav/vendor/autoload.php';
// Now we're creating a whole bunch of objects
$rootDirectory = new DAV\FS\Directory('public');
// The server object is responsible for making sense out of the WebDAV protocol
$server = new DAV\Server($rootDirectory);
// If your server is not on your webroot, make sure the following line has the
// correct information
//
$server->setBaseUri('/server.php');
// The lock manager is reponsible for making sure users don't overwrite
// each others changes.
$lockBackend = new DAV\Locks\Backend\File('dav/locks');
$lockPlugin = new DAV\Locks\Plugin($lockBackend);
$server->addPlugin($lockPlugin);
use Sabre\DAV\Auth;
$authBackend = new Auth\Backend\File('dav/.htdigest');
$authBackend->setRealm('SabreDAV');
$authPlugin = new Auth\Plugin($authBackend);
// Adding the plugin to the server.
$server->addPlugin($authPlugin);
// This ensures that we get a pretty index in the browser, but it is
// optional.
$server->addPlugin(new DAV\Browser\Plugin());
// All we need to do now, is to fire up the server
$server->exec();
Вся работа на клиенте велась в Total Comnder.
Подключение к серверу - Сеть->Подключить сетевой диск, далее строка
http://<MyServer>/server.php/
После чего появился запрос на авторизацию -> `SabreDAV\foo` c паролем `bar`.
тестирование производилось на клиенте - Window XP SP3. Никаких дополнительных магий мне не потребовалось делать. Возможно, все уже оказалось сделано при более ранних попытках работы с dav.
Для тестового комплекта файлов использовался каталог bin+vendors проекта SabreDav
Общий размер файлов ~3.5м Всего файлов 756, каталогов 151
Закачка тестового комплекта файлов
8:37
Удаление тестового комплекта файлов
34 секунды - проверка списка файлов, всего 2:03
По ftp та же операция занимает
закачка комплекта - 1:45
удаление - 0:30
Примерный проигрыш скорости - 5 раз.
Однако, на больших файлах (5 и 14 мб) примерное время одинаково, 14 мб грузится примерно по минуте.
Файл на +200мб загружаться отказался. Прилетел файл размера 0, загрузка кончилась удивительно быстро. С этим еще предстоит разобраться.
P.S. В server.php случайно оказался отладочный кусок. удален...