[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проверка на появление файлов
andreevich
Добрый день!
такая задача:
Есть директория, в которой с определённой регулярностью появляются текстовые файлы. Необходимо отследить появление определённых файлов по маске и продолжить с ними работу.
Вот что у меня пока есть:
PHP
$dir "D:/f3/locuseri/";
     
$dir2 "D:/f3/temp/".$_SESSION['ln']."/";
    
    if (
is_dir($dir)) 
    {
          if (
$dh opendir($dir)) 
        {
            while ((
$file readdir($dh)) !== false
            {
        
//вот мой шаблон-маска тех файлов, что я отслеживаю            
                
if(fnmatch($_SESSION['ln'].'010000.*'$file))
         {
                      
//вывожу найденный файл
            
echo "• ".$file."<br>";
                
rename ($dir.$file$dir2.$file);
            
unlink($dir.$file);                        
// пытаюсь его перенести в другую директорию, фал перемещается, но выдаётся ошибка 
//PHP Warning: [b]unlink[/b](D:/f3/locuseri/48010000.20): No such file or directory in D:\site\ap\get.php on line 39
//Я так понимаю в удалении проблема, но без этой функции не переносится ничего                    
                    
}
            }
            
// закрываем каталог
            
closedir($dh);
        }
    }

Вопрос: Где косяк ? smile.gif. Как сделать проверку на появление этого файла/ов (по маске) автоматической ?
И как бы мне эти файлы открыть для просмотра после нахождения?
Вот так всё прекрасно работает, но это отдельно если. Как их завзоимодействовать ?
PHP
$lines file($file);
  foreach(
$lines as $single_line);
  echo 
$single_line."<br/>\n";


Может я выбрал не тот подход и это можно организовать как-то по другому?




Спустя 6 минут, 18 секунд (16.07.2009 - 10:29) sergeiss написал(а):
Я глубоко не вник в твой скрипт...

Но первое, что бросилось в глаза:
PHP
rename ($dir.$file$dir2.$file);
unlink($dir.$file);

Ты переименовываешь файл, и тут же пытаешься удалить его по старым именем. А его уже нету, ты его только что переименовал! Поэтому появление ошибки закономерно полностью.

Спустя 6 минут, 47 секунд (16.07.2009 - 10:36) andreevich написал(а):
ауч, заработался ))))
без анлинка всё работает нормально, вчера ещё исправил, забыл с флэшки переписать wink.gif.
Эт-то спасибо, но вопрос остаётся:

Я эту проверку и копирование в другую директорию делаю по событию (нажимаю ссылку, запускается скрипт, проходит проверка-переименовываются файлы), а как сделать это без моего участия ?
Т.е., например, через какой-то определённый промежуток времени, например через 10с после установления сессии, будет проходить эта проверка-переименование.

Спустя 8 минут, 45 секунд (16.07.2009 - 10:45) sergeiss написал(а):
Либо запуск скрипта по крону (cron в юниксе, "Назначенные задание" в Винде), либо цикл в скрипте...

PS. Можно еще сделать на JavaScript smile.gif Запускаешь скрипт, а он с какой-то периодичностью шлёт на сервак AJAX-запросы, на основании которых инициируется загрузка файлов.

Спустя 30 минут, 14 секунд (16.07.2009 - 11:15) twin написал(а):
Вообще это лишнее все. Пка данные незатребованы, никому никакого дела нет, что там на сервере делается. Запускать скрипт надо при запросе от юзера, можно ограничение поставить по времени, если часто не надо. Тогда ни крон не нужен, ни лишний ресурс.

Спустя 32 минуты, 53 секунды (16.07.2009 - 11:48) andreevich написал(а):
а как тогда сделать дизейбл кнопки запроса на определённой время ?
например, нажал на кнопку, состояние "неактивное", прошло пару секунд-снова активна

Спустя 21 минута, 9 секунд (16.07.2009 - 12:09) sergeiss написал(а):
Цитата (andreevich @ 16.07.2009 - 12:48)
а как тогда сделать дизейбл кнопки запроса на определённой время ?

JavaScript рулит smile.gif
И ПХП тоже.

JS: после нажатия кнопки дизейблишь, и запускаешь таймер. По его истечении разрешаешь кнопку.

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

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.