PDA

Bekijk Volledige Versie : Is PHP geschikt om te spideren



timmy
12/04/07, 13:19
Hoi,

Is PHP geschikt om een spideren?
Ik weet dat PHP dit wel kan, echter vraag me af
of PHP wel het meeste stabiel/reliable en dus
geschikt is voor dergelijke zaken.

De bedoeling is zo'n 2 miljoen websites te
indexeren. Iemand anders heeft me aangeraden
Python hiervoor te gebruiken. (Hij zegt dat Google ook Python gebruikt om te spideren.)

Tevens vraag ik mij af of MySQL geschikt is
om zoveel data in op te slaan...

Graag jullie advies en jullie ervaring...
Groetjes,
Tim

GlennMatthys
12/04/07, 13:36
* Google gebruikt inderdaad Python
* Totzover ik weet heeft MySQL geen problemen met hele grote databases
* PHP kan evengoed spideren, maar (en dit geldt eigenlijk voor elke taal) let op het geheugengebruik als scripts lang blijven draaien en zorg voor goede foutenopvang.

PHP is eigenlijk een volwaardige programmeertaal, dus ik zie geen argumenten tegen waarom dit niet mogelijk is met PHP. Neem ook een kijkje naar de CURL php extensie. (http://be2.php.net/curl)

wonko
12/04/07, 14:06
zorg dat je programma goed ineen steekt, en je slim gebruik maakt van de aanwezige mogelijkheden. De taal op zich is bijzaak.

Sander-
12/04/07, 16:32
zorg dat je programma goed ineen steekt, en je slim gebruik maakt van de aanwezige mogelijkheden. De taal op zich is bijzaak.

(bijdehand-modus)
Maar de mogelijkheden hangen wel af van de taal...

En kijk daarnaast ook naar de inzetbaarheid van de applicatie, hoe hij gebruik gaat maken van geheugen, cpu etc (denk ook aan multithreading). Dit zijn allemaal dingen om net die paar procent extra performance te halen waarmee je applicatie op de lange termijn beter gaat lopen.

Xanno
13/04/07, 21:12
Je zou hiervoor best PHP en MySQL kunnen gebruiken. Python is inderdaad een goed alternatief als je voor PHP zou kiezen. Wat makkelijk is aan PHP dat een dergelijk spider programma makkelijk is te maken, is aan te passen en een goede afhandeling heeft voor foutmeldingen. De curl functie is daarom voor PHP geschikt.

Bij een goede data constructie met MySQL moeten 2 miljoen records geen probleem zijn.

ol4pro
14/04/07, 01:24
Python is beter dan php, gezien de language opzich meer heeft dan PHP.
Je zou zelfs voor JAVA kunnen kiezen.

PHP is een leuk alternatief voor dit karwei, maar zeker niet sneller voor dat geen wat je wilt gaan doen.

Komto
14/04/07, 09:30
Ik zou toch kijken naar Oracle in plaats van MySQL, denk dat je daar een aardige performance winst mee gaat halen.

wonko
14/04/07, 10:30
Ik zou persoonlijk kiezen voor ruby of php, met de nodige libraries. Als het een one-shot script is, zou ik php nemen, moet het wat deftiger en uitbreidbaarder, neem dan ruby.

2 miljoen records zou geen enkele database problemen mee mogen hebben, als de database correct aangemaakt en onderhouden wordt.

ivs
14/04/07, 12:03
Ik zou toch kijken naar Oracle in plaats van MySQL, denk dat je daar een aardige performance winst mee gaat halen.

Leg dat eens uit? Volgens mij is MySQL toch gebouwd met als gedachte minder functionaliteit en meer performance en Oracle met meer functionalteit wat ten koste gaat van performance?

ol4pro
17/04/07, 01:19
het is bijna onmogelijk om een redelijke vergelijking te maken tussen beiden Db

Oracle vs Mysql is geen vergelijking.

1: Performance heeft zelfs te maken met OS.

2: Afhankelijk van jouw kennis mbt Databases en DB Programming

3: Indien je een redelijke spider wilt ontwikkelen die langduring gaat spideren
is het misschien handig om uiteindelijk toch voor een DB zoals Oracle te
gaan kiezen. Uiteindelijk met ZEER VEEL data is Oracle qua funcionaliteit
en performance gewoon stukken beter.

Indien je met weinig data gaat werken is mysql gewoon de juiste optie.

Programming language

Spider Met Performance
c, c++ , java gebruiken en deze op server instaleren.

Webased opties Met Minder Performance.
perl, python, php

t.bloo
17/04/07, 02:39
ik denk niet dat je een spider web based wil maken... php is prima als losse taal te gebruiken net als perl, python en java. mogelijk even compileren voor het beste resultaat, hoewel dat wel mee zal vallen als het merendeel van je timing op zal gaan aan het maken van connecties.

een belangrijk verschil tussen databases zit niet in het er in stoppen, maar juist in het er uit halen. sqlite is net zo snel zo niet sneller voor het er in stoppen als een database met client-server gescheiden, maar is niet geschikt voor het querien van grotere bestanden. iets soortgelijks gaat ook op voor andere database engines. heel veel data opslaan kunnen ze allemaal met gemak en op eenvoudige wijze dat er weer uit halen ook.

almar
17/04/07, 14:06
Webased opties Met Minder Performance.
perl, python, php

Uhhhhh,

Dus als ik jou goed begrijp kun je deze programmeertalen alleen via het web gebruiken? :D

Perl is destijds opgezet als reporting language, de web functionaliteit werd later pas benut.

Anywayz je kunt deze zaken allemaal command-line draaien. Het gebruik van Java zal vrijwel zeker een aanslag op je interne geheugen betekenen.

timmy
17/04/07, 14:24
Java is voor mijn geen optie. Omdat ik dit dan nog op mijn systeem moet installeren. En dat vind ik nogal riskant. Alle overige zoals, python, pearl en welke database het meest geschikt is, daar lopen de meningen nogal uit een.

Ik begrijp uit jullie reactie's dat alles mogelijk is :-)
Dus in dat geval hou ik het liever dicht bij huis en is PHP en MySQL het meest vertrouwd.

almar
17/04/07, 17:11
Hier nog een leuk docuutje...

crazycoder
17/04/07, 18:16
Ik begrijp uit jullie reactie's dat alles mogelijk is :-)
Dus in dat geval hou ik het liever dicht bij huis en is PHP en MySQL het meest vertrouwd.
phpdig?

ol4pro
17/04/07, 22:30
Leuk informatief documentje,

I'll have my cup of coffe with JAVA anyday :) Risky ? Nah...


Hoi,
De bedoeling is zo'n 2 miljoen websites te
indexeren.

PHP is niet gemaakt om 2 miljoen sites te indexeren...

t.bloo
18/04/07, 00:02
PHP is niet gemaakt om 2 miljoen sites te indexeren...

python, perl en java ook niet speciaal hoor...

dat documentje is uit 2001, toen de engine van PHP versie 3 heeeel anders was dan die van versie 5. en er waren toen nog geen PHP compilers.

op specifieke punten zullen de verschillende talen allemaal wel voordelen en nadelen hebben, maar ik vind het te ver gaan om een van deze talen "af te schieten" om het enkele feit dat er iets 2 miljoen keer moet gebeuren.

almar
18/04/07, 00:03
Eerlijk gezegd denk ik dat het met Perl minder issues oplevert dan met php.

t.bloo
18/04/07, 00:46
dat wordt inderdaad vaker gedacht ja. waar zou dat in zitten? meer low level libraries? slankere parser? langer in ontwikkeling? krachtigere primitieven?

ol4pro
18/04/07, 02:34
Nu weet ik zelf niet zoveel ivm perl, wel weet ik dat PHP5 inprincipe word gezien als een volwaardige programmeertaal maar, tevens nog in haar kinderschoenen staat. Python (met de ongemakken van libraries) is nog steeds superieur aan PHP5


Het is niet dat iets 2 miljoen keren moet gebeuren, meer dat het een process is die niet stopped of niet hoort te stoppen.

timmy
19/04/07, 17:56
toch nog ff en vraagje...

ik zag vandaag een voorbeeld van Lynx op windows XP.
Zou het mogelijk zijn dat je m.b.v. PHP ook zo iets kan maken
maar dan om alleen te spideren.

Lynx zullen de meeste wel kennen hier omdat het een standaard
prog. op Linux is.
Maar het idee dat je een spider bouwt die alleen tekst en links kan Zien!
vind ik wel een veilig idee...

Geen css, geen images, geen tags, geen javascript
alleen maar txt en links...

Ik weet dat je met regex alles kan strippen...
maar zijn er ook andere mogelijkheden / PHP tools???

FreddyB
19/04/07, 20:42
Er zijn wel wat libs om HTML te strippen in PHP zoals de krachtige "tidy" library (zit standaard in de PHP dist in /etc/, hoef je enkel in php.ini aan te zetten).

PHP is echter zeer traag. Wanneer je performance wilt hebben zul je toch echt programma's moeten maken in bijvoorbeeld C/C++ en die laten praten met de webserver (CGI). Het bedrijf waar ik voor werk heeft webservers die een constante load van 300-2000 requests per seconde te verduren hebben. Wil je die requests via PHP laten lopen dan heb je aan 1 server niet genoeg. In ons geval hadden we via PHP voor 300 requests 3-4 servers nodig.

Omdat PHP zo traag was (en veel geheugen in gebruik neemt) hebben we in puur C programma's geschreven die de webserver direct aanspreekt. Nu kunnen we 500 requests per seconde af op ongeveer 25% cpu op 1 server.

PHP is een leuke/mooie script taal, die wij graag gebruiken voor eenvoudige webapplicaties, maar wanneer je echt performance wilt hebben zul je toch "back to basic" moeten. De afweging zit natuurlijk in de prijs; het ontwikkelen van C applicaties kost meer geld (lees: kost meet ontwikkeltijd). Het bijzetten van servers (PHP manier) kost ook een X bedrag. Afweging is applicatie afhankelijk.

MikeN
20/04/07, 09:48
Ehm, ik weet niet hoor, maar gaat het hier om spideren om vervolgens dingen doorzoekbaar te maken? Dan zou ik niet echt voor een relationele database gaan maar voor een custom database welke bedoelt is voor searchengines e.d. Denk aan Xapian enzo.

timmy
20/04/07, 20:22
@Freddy
Ik heb geen enkele ervaring met C/C++
maar kan je dit op een linux bak draaien
of moetje daarvoor windows hebben?

@Mike, what the hell is Xapian?

het moet allemaal niet gekker worden ?! :-)

t.bloo
20/04/07, 22:41
ik krijg het idee dat je nieuw bent in de programmeer-wereld?

Maar hier kun je iets over xapian vinden: http://www.xapian.org

ol4pro
21/04/07, 00:40
c/++ is gewoon nix compatible