Zi00mal napisał(a)
Witam,
musiałem "na szybko" napisać kod, który pobiera informacje (np: linki) z 10 stron (na próbę).
Użyłem do tego preg_match_all i wyszło mi że potrzebuję ok 20sec na 1 stronę czyli na np: 10 000 stron potrzebuję 200 000sec = 56h.
Ile z tego to koszt IO, ile to faktyczna ekstrakcja danych z pobranej strony?
Zi00mal napisał(a)
W php trzeba nadać odpowiedni czas timeout, więc wpisanie wartości 200000 trochę mija się z celem.
Fakt, można po prostu wpisać 0.
Zi00mal napisał(a)
- Czy curl działa szybciej od preg_match_all ?
Czy krowa gra gorzej od telewizora?
Zi00mal napisał(a)
- Jeżeli w C++ napiszę podobny kod to o ile szybciej będzie w stanie pobrać taką ilość informacji ?
O tyle, o ile szybsze łącze podepniesz przy odpalaniu programu w C++.
Konkretnie: efektywne crawlery tworzy się w oparciu o programowanie współbieżne, do czego PHP się zupełnie nie nadaje. Wyrażenia regularne raczej nie są Twoim problemem, PCRE nie jest najwolniejszy, w C++ też byś z niego korzystał. Możesz sam napisać przetwarzanie tekstu zamiast zdawać się na interpreter wyrażeń regularnych, powinno dać spory zysk, chociaż tak naprawdę wszystko rozbija się o szybkość sieci i współbieżność. Curl to biblioteka do obsługi HTTP, dostępna także w PHP, tak samo jak i PCRE dla wyrażeń regularnych (preg_match_all etc), bezpośrednie przepisanie z PHP na C++ niewiele zmieni.