Ограничения PHP при парсинге
PHP не самый удачный язык для парсинга. Дело в фундаментальной особенности PHP скриптов. Они сконструированы так, чтобы запускаться, быстро выполняться и умирать.
Как правило, PHP скрипты работают не
больше пары секунд. А в настройках PHP вообще
выставлено ограничение, принудительно завершающее
скрипт, если он работает более 30
-60
секунд. Парсинг, однако, обычно требует
гораздо большего времени - от нескольких
минут до часов и дней.
Кроме того, количество оперативной памяти, которые может занять скрипт, исчисляется мегабайтами. Если скрипт попытается занять больше, он будет принудительно завершен. При работе парсера легко выйти за пределы этого ограничения, если, например, попытаться сделать массив, состоящий из текстов сотни другой HTML страниц.
В длительно работающих PHP скриптах начинают происходить утечки памяти, когда скрипт со временем начинает занимать все больше и больше места в оперативной памяти. Со временем они доходят до такой величины, что скрипт принудительно завершается.
Из-за этих ограничений программистам приходится идти на различные ухищрения, заставляя работать PHP скрипты не предусмотренным для этого образом.
В отличие от PHP, скрипты на python или NodeJS не умирают, а представляют собой постоянно загруженный в память процесс.
Почему же люди выбирают PHP для парсинга? Дело в том, что большинство сайтов работает на PHP и обычно к такому сайту также пределывается парсер, работающий на PHP, тем более что зачастую программист владеет именно языком PHP и не хочет изучать что-то другое только ради парсера.
В следующих уроках мы рассмотрим подходы, позволяющие обойти указанные ограничения.