Как понять закачен ли файл по ftp полностью

SPavel_74100

Новичок
Как понять закачен ли файл по ftp полностью

Написан метод в классе
PHP:
function GetXMLFileFromDir()
	{
	 if ($dir = @opendir($this->xmlfiledir))
	 {
	  while (($file = readdir($dir)) !== false)
	  {
	   if($file!='..' && $file!='.')
	    if(filetype($this->xmlfiledir.$file)=='file')
	    {
	     $ext=strtolower(substr($file,-3));
	     if($ext=='xml')
	     {
		  	$this->xmlfilefromdir[count($this->xmlfilefromdir)+1] = array();
		  	$this->xmlfilefromdir[count($this->xmlfilefromdir)]["name"] = $file;
		  	$this->xmlfilefromdir[count($this->xmlfilefromdir)]["type"] = 'text/xml';
		  	$this->xmlfilefromdir[count($this->xmlfilefromdir)]["tmp_name"] = realpath($this->xmlfiledir.$file);
		  	$this->xmlfilefromdir[count($this->xmlfilefromdir)]["error"] = 0;
		  	$this->xmlfilefromdir[count($this->xmlfilefromdir)]["size"] = filesize($this->xmlfiledir.$file);
	     }
	    }
	  }
	 }
	 else {echo "Не могу открыть дескриптор директории $this->xmlfiledir"; exit;}
	 closedir($dir);
	 return true;
	}
дело в том что в паку $dir по ftp заливают файлы
а этот метод GetXMLFileFromDir класса вызывается через cron интервал 30 мин.

получается так что метот хватает не целые файлы при условии когда cron и закачка по ftp идет в одно и тоже время

Возможно ли определить что файл еще не докачался ?
 

dimagolov

Новичок
закачивать во временную папку, а по окончанию переносить в рабочую.

можно смотреть атрибуты файла (e.g. http://www.php.net/manual/en/function.filemtime.php и брать только те, что имеют дату модификации не позже, чем текущее время минус какой-то зазор.

можно навероное еще придумать способы, если думать...
 

Strelockk

Новичок
Попробовать сравнить размеры файла, до заливки и уже непосредственно после заливки на фтп.
 

dimagolov

Новичок
Strelockk, ты читать то, что написано не пробовал? а обдумывать? процессы заливки и обработки ПАРАЛЕЛЬНЫ и независимы, именно факт окончания заливки и надо определить в процессе обработки.
 

Strelockk

Новичок
прошу прощения, и впрямь не понял, что написано. Утро у нас раннее...
 

SPavel_74100

Новичок
Автор оригинала: dimagolov
закачивать во временную папку, а по окончанию переносить в рабочую.
это тоже надо писать обработку для временной папки чтобы переносил в рабочую, то на то и выходит. Если конечно не копить во временной а потом ручками переносить в рабочую.

Автор оригинала: dimagolov
можно смотреть атрибуты файла (e.g. http://www.php.net/manual/en/function.filemtime.php и брать только те, что имеют дату модификации не позже, чем текущее время минус какой-то зазор.
А вот это уже метод !

Спасибо.
 
Сверху