Мы обычно вызываем rsync
в (Mod) Perl (и PHP) и не сталкивались с слишком большим количеством проблем, но у нас иногда возникает ошибка протокола при выполнении команды, которая при запуске по последующему запросу проходит нормально,Самое смешное, что даже если я попытаюсь повторить код, для того же http-запроса он будет каждый раз сбиваться, но если вы сделаете еще один http-запрос, он, скорее всего, будет успешным.
Код выглядит следующим образом:
$cmd = sprintf('rsync -auvvv --rsync-path="rsync --log-file=/tmp/ui-rsync.log" %s %s', "$fromDir/$fromBase/", "$path/$toBase/");
$exitCode = system($cmd);
Аргумент --rsync-path был добавлен позже для отладки.Это было бесполезно.Сбой в любом случае.
Ошибки выглядят так:
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(600) [sender=3.0.6]
или примерно так:
unexpected tag 93 [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(1134) [receiver=3.0.6]
rsync: connection unexpectedly closed (9 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(600) [sender=3.0.6]
Я отлаживаю фактические сгенерированные команды и могу их запускатьштрафа от руки.
Пользователь http может нормально выполнять команды.
Опять же, программная повторная попытка никогда не работает, но повторяется вручную (при достижении той же конечной точки httpэто срабатывает), работает почти всегда.
Цените любую помощь, так как это сводит нас с ума в течение ... долгого времени, с множеством исправлений.