Файлы отправляются на мой сервер через FTP. Я обрабатываю их с помощью кода PHP в модуле Drupal. ОС - это Ubuntu, а FTP-сервер - vsftp.
Я регулярно проверяю наличие новых файлов, обрабатываю их с помощью SimpleXML и перемещаю в папку «Готово». Как мне избежать обработки частично загруженного файла?
vsftp имеет для lock_upload_files значение по умолчанию yes. Я подумал о том, чтобы попытаться сначала переместить файлы, ожидая, что перемещение не удастся для загружаемого в данный момент файла. Похоже, этого не происходит, по крайней мере, в командной строке. Если я начинаю загружать большой файл и перемещаюсь, он просто продолжает расти в новом месте. Я предполагаю, что запись в каталоге не заблокирована.
Следует ли мне попробовать fopen с режимом 'a' или 'r +', просто чтобы увидеть, удастся ли это, прежде чем пытаться загрузить в SimpleXML, или есть лучший способ сделать это? Думаю, я мог бы просто обнаружить сбой загрузки SimpleXML, но ... это кажется беспорядочным.
Я не могу контролировать отправителя. Они не будут загружать и переименовывать. Тип System.Int32 в Недопустимый тип System.Int64. [..] Детали исключения: System.InvalidOperationException: The указанный отливок из материализованного Тип System.Int32 в Тип 'System.Int64' недействителен.
Исходный файл: C: \ TempPersonalCode \ TransportTracking \ TransportTracking \ TransportTracking \ Controllers \ AJAXController.cs Line: 35
(Line 35 is the select clause)
I'm confused because if change:
select new { ClientDataID = clntDt.ClientDataID,
CompanyName = clntDt.CompanyName,
to
select new { ClientDataID = (Int32)clntDt.ClientDataID,
CompanyName = clntDt.CompanyName,
then it works fine. Isn't an anonymous object supposed to use reflection to determine it's type? if so, why is it deciding that it's an "Int32" instead of a long? Within the EDMX I have it as an Int64.