Я разрабатываю систему, которая взаимодействует с комплектом поставки USPS под названием Dazzle. Часть этой системы включает в себя демон мониторинга, целью которого является получение файлов значений, разделенных табуляцией, превращение их в XML, распознаваемый Dazzle, и передача их в Dazzle для создания меток. И эта часть работает просто отлично. Однако я также хочу проанализировать выходной файл, который генерирует Dazzle, и импортировать его в базу данных.
Обратите внимание, что Dazzle работает в Windows. Мой демон мониторинга написан на Perl и работает в Linux. В моей системе Linux есть каталоги ввода и вывода Dazzle, смонтированные через Samba.
Измеримая задержка между моментом, когда Dazzle начинает записывать выходной файл, и временем, когда он заканчивается. Что я хочу знать, так это как я могу ждать, пока Dazzle закончит запись выходного файла? Я попытался открыть файл и сделать flock($fh, LOCK_SH)
, но это не принесло пользы.
РЕДАКТИРОВАТЬ : У меня есть идея, основанная на комментарии "mobrule" ниже. Dazzle записывает выходной файл в формате XML. Каждая посылка в упаковке заключена в теги, а весь документ - в тег. Поэтому, если я начну читать файл до его завершения, я могу просто подождать соответствующий закрывающий тег, прежде чем предпринять какие-либо действия.
Кроме того, я должен упомянуть, что я делаю в настоящее время. Когда я обнаруживаю, что выходной XML-файл создан, я пытаюсь его проанализировать. Если это не удастся, я сплю и попробую еще раз. Если это не помогло, я сплю вдвое дольше, потом попробую еще раз и так далее. Это хорошо сработало при тестировании с тайм-аутом в 64 секунды.