Я написал довольно простое веб-приложение на Perl, и оно обрабатывает XML-файлы, используя XML::Twig
. Эти XML-файлы довольно большие и сложные, поэтому я намеренно использую переменную chunk by chunk, равную XML::Twig
, а не метод «загрузить все сразу».
Однако, это веб-приложение полностью падает и умирает, если я загружаю большой XML-документ, даже при использовании метода чанкинга. Я не смог понять, почему это происходит, потому что веб-приложение размещено на общем сервере с 1and1.co.uk, и я не вижу файл журнала ошибок Apache. Даже когда я упаковывал вызовы в блок eval{}
, я не мог уловить его от смерти. Досадно, что он отлично работает на моем сервере разработки дома, поэтому я не смог воспроизвести проблему.
Чтобы заставить его работать, я внес изменение, чтобы вместо использования метода parse()
и передачи скаляра, содержащего весь XML, я записал XML в файл, а затем использовал parsefile( $filename )
. Когда я внес это изменение, оно сработало.
Я просто немного озадачен этим, и я попытался с помощью чуда Google выяснить, действительно ли parsefile()
более эффективен, чем parse()
, но не смог ничего найти. Кто-нибудь знает?