(Wow iemand die eval() suggereerdquote:Op zondag 9 september 2007 11:05 schreef SuperRembo het volgende:
[..]
Je zou ook de php eval() kunnen gebruiken, dat scheelt een boel gekloot met regexps.
Ik denk dat preg_match_all met #\d+|'(\'|[^'])*?'# genoeg moet zijn voor een lijst van getallen en strings. (niet getest)quote:Op zondag 9 september 2007 00:55 schreef Igen het volgende:
Ai, ik heb dat ook eens gedaan. Het was een enorm gepuzzel om de juiste reguliere expressie te vinden, maar uiteindelijk toch gelukt:
[ code verwijderd ]
Er zitten wel wat rare dingen in je regexp. [\s\S] (whitespace of non-whitespace) dat is toch gewoon elk willekeurig teken? [^',][^,']* is hetzelfde als [^',]+. Je regexp zou beter leesbaar zijn als je voor de regexp zelf dubbele quotes zou gebruiken, dan hoef je de enkele quotes in de regexp niet te escapen.quote:Op zondag 9 september 2007 11:32 schreef Igen het volgende:
Gaat dat niet fout als \\' in een string voorkomt?
Ik heb heus wel nagedacht over mijn regexp hoor!
Ik had het al op een andere manier opgelost:quote:Op zondag 9 september 2007 00:55 schreef Igen het volgende:
Ai, ik heb dat ook eens gedaan. Het was een enorm gepuzzel om de juiste reguliere expressie te vinden, maar uiteindelijk toch gelukt:
[ code verwijderd ]
Als je het 'topic(' aan het begin, en ');' aan het einde, al eraf hebt gehakt, en je dus zoiets overhoudt:
1,10,4372847328,8239,'Igen',32198,'Slecht \'topic\', enzo',0
dan kun je deze functie gebruiken om de eerste $max velden op te vragen.
Werkt perfect voor Fok!Silver, voor de topic-list en voor de topics zelf. :)
1 2 3 4 5 6 7 8 9 10 11 12 13 | $forum_html = file_get_contents('http://forum.fok.nl/forum/5'); $ex = explode('topic(',$forum_html); unset($ex[0],$ex[(count($ex)-1)]); foreach($ex as $key => $value) { $ex2 = explode(",'",$value); echo stripslashes(rtrim($ex2[1], "'")) . "<br>"; $topic_list[$row['forum']][intval($ex2[0])] = $ex2[1]; } ?> |
Nee, ik bedoel te zeggen dat je met een regular expression helemáál niet moeilijk hoeft te doen om een topicregel te matchen, omdat er maar één waarde in topic() een apostrofe kan bevatten. Je matcht dan het stuk waar de regels in voorkomen met preg_match_all() met een regex als deze:quote:Op zondag 9 september 2007 14:20 schreef Igen het volgende:
Om het bestand in regels op te delen kun je toch ook gewoon file() gebruiken, in plaats van file_get_contents() ?
Maar dan moet je nog steeds iets met elke regel doen, en daarvoor moet je die toch echt bij de juiste komma's in stukken hakken. Of begrijp ik je nu helemaal verkeerd?
Een dedicated databaseserver en een parttime crawler die afhankelijk van de situatie bij mij thuis of in Amsterdam op het datacentrum draaitquote:Op zondag 9 september 2007 19:24 schreef PiRANiA het volgende:
JeRa, dat heb je waarschijnlijk op een server draaien.
Hoe pak je dat aan? Heb je het op een lokale server?
Met een crontab.quote:En hoe zorg je dat het script blijft draaien en niet aangeroepen hoeft te worden door een browser?
Ik heb een jaar of wat geleden een framework geschreven om heel FOK! te indexeren, in eerste instantie voor een uitgebreide zoekmachine (die niet in gebruik werd genomen vanwege de nieuwe zoeken.fok.nl van Roönaän) en vervolgens voor de statistieken en andere willekeurige dingenquote:Op zondag 9 september 2007 19:31 schreef Xcalibur het volgende:
Wat doen jullie verder met die scripts btw?
Dat blocken is wat lastiger omdat mijn crawler zich bijvoorbeeld niet veel anders voordoet dan de gemiddelde niet-ingelogde bezoeker (ik stuur wat minder headers mee om zo het aantal packets mogelijk te verminderen). Ze zouden dan geen onderscheid moeten maken tussen een crawler en een bezoeker die als een gek topics aan het doorspitten isquote:Op zondag 9 september 2007 19:41 schreef Xcalibur het volgende:
Ah ok...
Dat indexeren door x-aantal man is wel suf idd, kan FOK dat soort verkeer niet blocken dan?
Volgens mij zitten die tools meestal gewoon bij je hosting pakketquote:Op maandag 10 september 2007 12:01 schreef markiemark het volgende:
Over crons.. Kan ik die dmv een php script aanmaken? En kan ik deze ook zo instellen dat ze eenmalig draaien?
Zelf zie ik geen probleem in een proxy blokkeren. Als die misbruikt word ga ik mijn site daar niet voor openstellen. Mochten users die ook achter die proxy daar problemen mee hebben dan gaan ze maar bij de eigenaar van die proxy klagen . Het handje vol bezoekers wat ik daar mee uitsluit neem ik wel voor liefquote:Op maandag 10 september 2007 13:06 schreef Igen het volgende:
Wordt lastig. Anonieme gebruikers zijn alleen te traceren met hun IP-adres, dus dan moet je voor elk IP-adres gaan bijhouden wanneer hoeveel pagina's zijn opgevraagd, en daarmee belast je de database ook weer. Bovendien heb je nog het probleem dat mensen die dezelfde proxy-server gebruiken allemaal hetzelfde IP-adres lijken te hebben, dacht ik.
En sowieso, 100 aanvragen per minuut!?
Daar kom ik niet eens in de buurt. Je zou 10 aanvragen per minuut kunnen zeggen. Maar dan krijg je weer dat mensen onterecht geblokkeerd worden omdat ze achter een proxy-server zitten, of omdat ze in Firefox ineens al hun actieve topics in een nieuwe tab openen.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |