CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Entwicklung und Softwaredesign Hier können strukturelle (Programmier-) Konzepte diskutiert und Projekte vorgestellt werden |
20.08.2007, 19:42:53
|
SELFPHP Guru
|
|
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
|
|
AW: Datenstruktur die zufällige Reihenfolge beinhaltet
hallo leute, tut mir leid, dass ich mich so lange nicht mehr gemeldet habe. rambi: deinen vorschlag hab ich glatt überlesen.
ich werde die nächsten tage mal alles testen und morgen (heute bin ich irgendwie zu müde, jaja, das alter) dann die fragen beantworten...
|
21.08.2007, 02:55:14
|
|
AW: Datenstruktur die zufällige Reihenfolge beinhaltet
Phuuu... und ich dachte schon fast, ich hätte dich irgendwann einmal verärgert und wäre auf der Ignorierliste (die mit den 10000 (hoffendlich)freien Plätzen) gelandet.... ;-)
Aber so:
Mach was draus, und berichte.. :-)
*Ach ja*
Wo bekommt man überhaupt 10^9 Worte her, bzw. was stellst du damit an?
Geändert von rambi (21.08.2007 um 02:58:49 Uhr)
|
01.09.2007, 00:49:01
|
|
AW: Datenstruktur die zufällige Reihenfolge beinhaltet
@feuervogel
Gibt es neue Erkenntnisse?
|
01.09.2007, 10:39:54
|
SELFPHP Guru
|
|
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
|
|
AW: Datenstruktur die zufällige Reihenfolge beinhaltet
okay, ich formuliere es mal so:
es geht um einen webcrawler. und jaaa, ich weiß, es gibt schon 1000 webcrawler, aber wenige, die sich fürs große crawlen eigenen und dauerhaft performant sind. meine abteilung in der uni musste damit einige schmerzhafte erfahrungen sammeln.
im grunde genommen wird der crawler in zwei schritten arbeiten:
1. alle urls der liste abarbeiten und neue urls speichern.
2. die liste durcheinander würfeln und wieder zu 1 springen.
die verwaltung dieser liste hat sich als der größte flaschenhals herausgestellt, daher ist es mir so wichtig, dass es halbwegs performant abläuft. aber hier kann ich mir dann ja einen schnellen sortieralgorithmus ausdenken/implementieren (oder einfach mysql die arbeit machen lassen, kann ja ruhig ein wenig dauern).
alllerdings ist mir auch die idee gekommen, den leuten in der uni eins vorraus zu sein und threads zu benutzen, dann kann ich vielleicht gleichzeitig sortieren und crawlen (je nachdem wie viele resourcen das frisst). aber das kann natürlich immer zu zusätzlichen problemen führen.
|
01.09.2007, 18:44:14
|
|
AW: Datenstruktur die zufällige Reihenfolge beinhaltet
So langsam wirds deutlicher, was du vorhast...
(aber so wirklich viel Ahnung habe ich da auch nicht von)
Wozu soll das Würfeln der Liste gut sein?
Wann die Seiten an die Reihe kommen, ist doch relativ wurscht, oder nicht?
Ist da ein Timestamp von letzten Scan nicht viel angebrachter?
Auch über ein Relevanz Flag könnte man nachdenken.
Threads:
Das erscheint mir viel logischer!
KA wie lange dein Script braucht um eine Seite zu analysieren, sagen wir mal 10ms. Die typische Requestzeit dürfte heutzutage bei ca 100 bis 500 ms liegen. Also wären für maximale Auslastung ca 10 bis 50 Threads angesagt, welche die einzelnen URLs abklappern. Ein Thread zum sortieren scheint mir da irgendwie falsch zu sein, das sollte man der DB überlassen.
Vermutlich ist es noch nicht einmal wichtig, ob die Daten sofort und synkron in die DB geschrieben oder gelesen werden. Also Queues einrichten, wo es nur geht.
So, mehr mag dazu nicht sagen...
|
01.09.2007, 18:57:22
|
SELFPHP Guru
|
|
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
|
|
AW: Datenstruktur die zufällige Reihenfolge beinhaltet
es gibt webseitenbetreiber die dich aussperren wenn du über einen längeren zeitraum ihre seite alle 30 sekunden abfragst. es gibt webseitenbetreiber die richten eine robots.txt ein mit einer vorgeschriebenen pause von 3 minuten. und es gibt webseiten, die zusammenknicken, wenn man sie mit anfragen torpediert, auch zu einem "guten" zweck. (so geschehen durch die uni leipzig beim tüv süd, als nach den urls rückwärs gelesen sortiert wurde.)
daher spielt die reihenfolge sehr wohl eine rolle und es wichtig, dass diese zufällig ist.
ich könnte natürlich für jede domain einen thread aufmachen und dann jeweils den thread warten lassen, aber ich will ja keine breitensuche, sondern möglichst verschiedene webseiten crawlen :-)
|
01.09.2007, 20:07:06
|
|
Junior Member
|
|
Registriert seit: Mar 2006
Beiträge: 415
|
|
AW: Datenstruktur die zufällige Reihenfolge beinhaltet
Was hältst Du davon, nach der Quersumme der URL zu sortieren?
Problematisch dabei wären dann wohl so CMS' die solche URLs verwalten wie:
www.domain.de/?id=1
www.domain.de/?id=2
www.domain.de/?id=3
Da die dann immer nah beieinander liegen.
__________________
Bitte sprich entweder deutsch oder englisch mit mir, aber nicht beides gleichzeitig.
----------
Bitte vor dem Fragen lesen: Wie man Fragen richtig stellt.
|
01.09.2007, 20:27:41
|
|
AW: Datenstruktur die zufällige Reihenfolge beinhaltet
Zitat:
daher spielt die reihenfolge sehr wohl eine rolle und es wichtig, dass diese zufällig ist.
|
Sicherlich ist eine Reihenfolge irgendwie wichtig. Aber was das mit dem Zufall zu tun haben soll, hast du mir damit noch nicht verkauft.... ;-)
Der Zufall hilft weder bei den 3 Minuten, noch verhindert er das tausendfache Anfragen einer Domain. Es liegt in der Natur der Zufälle, dass sie nicht SO zuverlässig sind und ab und zu die witzigsten Zahlenfolgen liefern.
|
01.09.2007, 20:57:56
|
SELFPHP Guru
|
|
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
|
|
AW: Datenstruktur die zufällige Reihenfolge beinhaltet
sagen wir so: beim zufall ist die gefahr am kleinsten, dass ich mehrere urls einer domain hintereinander erwische.
und es ist für die datenmenge nunmal am einfachsten zu implementieren. (1 milliarde mal eine quersumme eines strings ausrechnen möchte ich z.b. nicht).
und du kannst dir ziemlich sicher sein, dass es google genau so macht, und deren lösungen sind durchaus sehr performant.
|
17.09.2007, 12:37:10
|
SELFPHP Guru
|
|
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
|
|
AW: Datenstruktur die zufällige Reihenfolge beinhaltet
So, nachdem meine Tage wieder ein wenig stressfreier geworden sind:
Ich habe nun eine erste pre-alpha des Crawlers implementiert. Er ist in Python geschrieben; Crawling läuft verteilt. Der Code fürs Crawlen wird dynamisch mittels Pyro geladen, die Daten über xmlrpc hin- und hergeschickt.
Ich habe eine Liste mit aktuellen URLs. Diese Crawle ich nach URLs und speichere sie. Wenn die alten URLs alle abgegrast sind, dann sortiere ich beide Listen zufällig und fange wieder von vorne an.
Da ich mit einer MySQL-Datenbank arbeite, erledige ich das faulerweise mit order by `rand` (so heißt die Spalte).
Ansonsten heißt es jetzt eigentlich nur noch Bugtesting und weitere schöne Eigenheiten hinzuzufügen (ausser, dass mir lediglich ein paar hundert Terrabyte fehlen um wirklich loszulegen).
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 10:32:08 Uhr.
|