PHP и с чем его едят....

kamerad

Well-Known Member
Добавить:
Код:
RewriteBase /
И еще было бы неплохо показать кусок кода страницы с подобными путями, которые не работают в firefox.
оффтоп, но вы сектанты и отщепенцы т.к. осеняя себя надо говорить не рамень, не раминь, а мивинь!
 

Moxa

New Member
Всем привет.
Задача - периодическая репликация папок, т.е. копирование только измененного или нового содержимого. Рабочий php скрипт копирования:

<?php function dircpy($source, $dest, $overwrite = false){
if(!is_dir($dest))
mkdir($dest);
if($handle = opendir($source)){
while(false !== ($file = readdir($handle))){
if($file != '.' && $file != '..'){
$path = $source . '/' . $file;
if(is_file($path)){
if(!is_file($dest . '/' . $file) || $overwrite)
if(!@copy($path, $dest . '/' . $file)){
echo '<font color="red">File ('.$path.') could not be copied, likely a permissions

problem.</font>';
}
} elseif(is_dir($path)){
if(!is_dir($dest . '/' . $file))
mkdir($dest . '/' . $file); // make subdirectory before subdirectory is copied
dircpy($path, $dest . '/' . $file, $overwrite); //recurse!
}
}
}
closedir($handle);
}
}


$zz="D:\JAVA\-from" ;
$zx="L:\-to" ;
dircpy($zz, $zx, $overwrite = false);

?>

проблема в том, что при вызове функции с параметром
$overwrite = false - во время копировании игнорируются измененные файлы с тем же допустим именем, а при
$overwrite = true - то копируется с перезаписью естественно тотально всё содержимое, в том числе уже имеющееся в целевой папке; папка огромна и длительный проход колоссального ненужного трафика - неприемлем.

Спасибо.
 

Kadiz

Active Member
Добавьте дополнительные условия
if(!is_file($dest . '/' . $file) || $overwrite)
То что вы хотите похоже на ( )?
 
Останнє редагування:

Moxa

New Member
Добавьте дополнительные условия

То что вы хотите похоже на ( )?
Может быть нужно создавать массив, куда передавать файлы, с датой создания отличных от уже имеющихся в папке-приемнике, и потом их уже и копировать с режимом overwrite ?
Первые шаги в php.

Спасибо.
 

Kadiz

Active Member
Алгоритм

Утилита rsync использует алгоритм, разработанный австралийским программистом Эндрю Триджеллом, для эффективной передачи структур (например, файлов) по коммуникационным соединениям в том случае, когда принимающий компьютер уже имеет отличающуюся версию этой структуры.

Принимающий компьютер разделяет свою копию файла на неперекрывающиеся куски фиксированного размера S, и вычисляет контрольную сумму для каждого куска: MD4-хеш и более слабый кольцевой хэш, и отправляет их серверу, с которым синхронизируется.

Сервер, с которым синхронизируются, вычисляет контрольные суммы для каждого кусочка размера S в своей версии файла, в том числе перекрывающиеся куски. Вычисления производятся эффективно ввиду особого свойства кольцевого хэша: если кольцевой хэш байт от n до n + S − 1 равняется R, то кольцевой хэш байт от n + 1 до n + S может быть посчитан исходя из R, байта n и байта n + S без необходимости учитывать байты, лежащие внутри этого интервала. Таким образом, если уже подсчитан кольцевой хэш байт 1—25, то для подсчета кольцевого хэша байт 2—26 используется предыдущее значение и байты 1 и 26.


(A simple PHP rsync wrapper library)
 
Останнє редагування:
  • Like
Реакції: Moxa

Moxa

New Member
Алгоритм

Утилита rsync использует алгоритм, разработанный австралийским программистом Эндрю Триджеллом, для эффективной передачи структур (например, файлов) по коммуникационным соединениям в том случае, когда принимающий компьютер уже имеет отличающуюся версию этой структуры.
Здоровская программка, спасибо, но речь идет именно о модернизации предложенного выше php скрипта.

Дело в том, что уже есть ряд работающих php-скриптов, выполняющих однотипные задачи, поэтому плодить дополнительно для этого же еще и батники или сторонний софт - не комильфо, хотя идея хороша.
 

Michael

Well-Known Member
Команда форуму
Администратор
Здоровская программка, спасибо, но речь идет именно о модернизации предложенного выше php скрипта.

Дело в том, что уже есть ряд работающих php-скриптов, выполняющих однотипные задачи, поэтому плодить дополнительно для этого же еще и батники или сторонний софт - не комильфо, хотя идея хороша.
ну так модернизируйте используя для этого нормальный подход (например ), не нужно изобретать колесо снова
 
Зверху