Xpoint
   [напомнить пароль]

Инерция файловой системы или?

Метки: [без меток]
2010-01-21 09:02:34 [обр] Александр Петров(2/4)[досье]

Здравствуйте, такое дело:

  1. Имею файл /tmp/test.txt
$m1 = filemtime("/tmp/test.txt");  //запоминаю timestamp
@shell_exec("rm /tmp/test.txt"); //удаляю файл
print date("F d y H:i:s", $m1);
  1. Скачиваю новую версию
$cmd_wget = "cd /tmp/test.txt \n 
wget http://aral.ru/aral.zip -N -i /tmp/1 \n
chmod -R 0777 /tmp/1/test.txt";
@shell_exec($cmd_wget);
print "-download-"

3.Проверяю еще раз

$m2 = filemtime("/tmp/test.txt");  //запоминаю timestamp
@shell_exec("rm /tmp/test.txt"); //удаляю файл
print date("F d y H:i:s", $m2);

Вопрос: timestamp не изменяется. Думал команда wget не сбрасывает файл в файловую систему до окончания работы скрипта. Поставил sleep после неё и убедился что в линуксе время изменилось. Дождался окончания работы и увидел что второй timestap равен первому.

спустя 38 минут [обр] Lynn «Кофеман»(98/571)[досье]
спустя 3 часа 9 минут [обр] Dennis F. Latypoff aka funky_dennis(4/78)[досье]
-$cmd_wget = "cd /tmp/test.txt \n 
+$cmd_wget = "cd /tmp \n
спустя 6 минут [обр] Александр Петров(2/4)[досье]
Dennis F. Latypoff aka funky_dennis[досье]
это да, я просто оптимизировал код для вопроса и писал его прямо на сайте, я потом только увидел это. Спасибо
спустя 37 минут [обр] Филипп Ткачев(20/112)[досье]
Александр Петров[досье], честно говоря, так и не понял смысл вашего шаманства с логом загрузки файла.
спустя 2 минуты [обр] Александр Петров(2/4)[досье]
Я просто скачиваю файл потом проверяю изменился ли он (буду CRC счиать) и если изменился то дальше перенаправляю в рабочую систему
спустя 3 минуты [обр] Александр Петров(2/4)[досье]

Во как заработало

//0
$tmp = '/tmp';
$download = 'http://test.petav200/grab/test.txt';
$name = 'test.txt';

//1
$m1 = @filemtime("{$tmp}/$name");
print date("F d y H:i:s", $m1);

//2
shell_exec("cd {$tmp}");
shell_exec("wget {$download} -O {$tmp}/{$name}");
shell_exec("chmod -R 0777 {$tmp}/{$name}");

print "-download-";

//3
clearstatcache();
$m2 = @filemtime("{$tmp}/$name");
print date("F d y H:i:s", $m2);

Lynn «Кофеман»[досье], спасибо огромное

спустя 27 минут [обр] Филипп Ткачев(20/112)[досье]
Может стоить просто хранить время и размер файла, а сервер спрашивать? Можно ведь получить от сервера заголовки о времени и размере файла. Тогда качать ничего не прийдется. Экономия трафика, ресурсов.
спустя 2 минуты [обр] Александр Петров(2/4)[досье]
а можно, просто это скрипт я задумывал как пару строчек, а уже ошибки в 1000 строке нахожу. Можно использовать ключ wget и он не будет брать не изменившийся файл, а потом еще php проверять что бы логику выдерживать, потому как вывод о работе wgeta муторнее рассматривать чем проверить время файла
спустя 9 минут [обр] Александр Петров(2/4)[досье]
  -N, --timestamping не загружать повторно файлы, только если они
                                 не новее, чем локальные.
Powered by POEM™ Engine Copyright © 2002-2005