php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 10-06-2010, 15:26
aberultra
 Registrierter Benutzer
Links : Onlinestatus : aberultra ist offline
Registriert seit: Jun 2010
Beiträge: 21
aberultra befindet sich auf einem aufstrebenden Ast
Standard Lösung für Problem mit aufwendiger Datenverarbeitung

Hallo,

habe folgendes Problem:

Verarbeite ein Array mit >20.000 Einträgen. Entweder das Script bricht ab, oder -ja nach Serverconfig- stoppt das Script nach x Sekunden.

Suche nach einer Lösung wie sich das ganze möglichst sicher verarbeiten lässt. Bin eher Einsteiger in Sachen PHP.

Schön wäre auch die Möglichkeit eine Fortschrittsanzeige zu haben. Hoffe mein Problem kann nachvollzogen werden.

Danke schonmal für euere Hilfe.

Grüße
Mit Zitat antworten
  #2 (permalink)  
Alt 10-06-2010, 15:55
ruck32
 Registrierter Benutzer
Links : Onlinestatus : ruck32 ist offline
Registriert seit: Jan 2010
Beiträge: 14
ruck32 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von aberultra Beitrag anzeigen
Hoffe mein Problem kann nachvollzogen werden.
Nicht ganz. Was genau passiert mit den Daten?

Zitat:
Zitat von aberultra Beitrag anzeigen
Entweder das Script bricht ab, oder -ja nach Serverconfig- stoppt das Script nach x Sekunden.
Und du hast keine Möglichkeit die Config zu ändern?
Mit Zitat antworten
  #3 (permalink)  
Alt 10-06-2010, 15:55
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo und willkommen im Forum,

wo kommt denn das Array her? Am verfügbaren Speicher kann man, außer auf einem eigenen Server, meist nicht viel machen. Die Scriptlaufzeit kann man zwar beeinflussen, aber im Webumfeld macht das dann irgendwann keinen Sinn mehr. Du musst also das Datenhandling ganz anders anpacken.

Wie genau, lässt sich nur entscheiden, wenn du uns die Herkunft der Daten erläuterst.

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #4 (permalink)  
Alt 10-06-2010, 19:29
aberultra
 Registrierter Benutzer
Links : Onlinestatus : aberultra ist offline
Registriert seit: Jun 2010
Beiträge: 21
aberultra befindet sich auf einem aufstrebenden Ast
Standard

Danke für eure Antworten!

Ich versuchs mal näher zu erläutern: ich habe aktuell im beispiel eine textfile mit ca. 20.000 Domains. Diese wird mit file() ausgelesen und in ein Array geschrieben.

Jetzt möchte ich mit jeder Domain mittels einer Schleife eine Funktion ausführen. Und die resultierenden Daten speichern.

Wie läuft das zum Beispiel bei einem Webcrawler, einer Suchmaschine? Denke da läuft ja kein Script non Stop sondern verarbeitet Daten auch Schrittweise.

Suche eben nur den entscheidenden Knackpunkt wie sich sowas realisieren lässt. Näher einlesen bzw. damit befassen muss ich mich anschließend sowieso, weis aber nicht wo ich hier ansetzen muss.

Beste Grüße
Mit Zitat antworten
  #5 (permalink)  
Alt 10-06-2010, 19:36
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Schritt 1: Nutze eine Datenbank. Schreib dir für die Datei ein Import-Script. Dann kannst du das notfalls mit LIMIT und in mehreren Schritten machen.
Zitat:
Jetzt möchte ich mit jeder Domain mittels einer Schleife eine Funktion ausführen. Und die resultierenden Daten speichern.
Was meinst du mit einer Schleife für jede Domain? Was für eine Funktion wird dann ausgeführt?

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #6 (permalink)  
Alt 10-06-2010, 19:40
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

Hmmm, ne db statt textfile wär ned schlecht. Script dann per cronjob alle paar minuten anstupsen und immer nur eine begrenzte anzahl domains abarbeiten.
__________________
Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
Schön - etwas Geschichte kann ja nicht schaden.
Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!
Mit Zitat antworten
  #7 (permalink)  
Alt 10-06-2010, 19:44
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von aberultra Beitrag anzeigen
Denke da läuft ja kein Script non Stop sondern verarbeitet Daten auch Schrittweise.
Wenn du dich da mal nicht irrst…
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #8 (permalink)  
Alt 10-06-2010, 20:39
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Quetschi Beitrag anzeigen
Hmmm, ne db statt textfile wär ned schlecht. Script dann per cronjob alle paar minuten anstupsen und immer nur eine begrenzte anzahl domains abarbeiten.
Erklär doch bitte mal die Sache mit den Schleifen und der Funktion. Ich vermute da einen gewaltigen Engpass.

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #9 (permalink)  
Alt 10-06-2010, 20:58
aberultra
 Registrierter Benutzer
Links : Onlinestatus : aberultra ist offline
Registriert seit: Jun 2010
Beiträge: 21
aberultra befindet sich auf einem aufstrebenden Ast
Standard

Frage hier für jede Domain Informationen über eine API ab (Beispielsweise Backlinkanzahl über die Yahoo-API) und erhalte für jede Domain einen Rückgabewert.

Würde aber auch darüber hinaus gerne Anwendungen schreiben die eben größere Datenmengen / Informationen scrapen. Benötige hier halt eine Lösung wo man den aktuellen Status (was das Script gerade so macht) im Browser beobachten kann und auf der anderen Seite soll es möglichst Absturz / Abbruchssicher sein, was bei einfachen Schleifen ja sehr schnell komplex wird und der Server (auch nach einer gewissen nicht-Antwortszeit des Scripts -was ja normal ist wenn man größere Datenmengen handelt-) dann abbricht.

Danke für euere Antworten!
Mit Zitat antworten
  #10 (permalink)  
Alt 10-06-2010, 21:09
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Mach es so. Hol dir alle Informationen, die nicht bei drei auf den Bäumen sind. Die schreibst du dann in deine Datenbank und wertest sie später aus. Alles auf einmal zu machen, ist sicher sehr unperformant. Und wenn du aus welchen Gründen auch immer die Infos nicht bekommst, so setze bei der Domain ein Flag und probier es später noch mal.

Peter

PS. Was hast du eigentlich vor?
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #11 (permalink)  
Alt 10-06-2010, 21:21
aberultra
 Registrierter Benutzer
Links : Onlinestatus : aberultra ist offline
Registriert seit: Jun 2010
Beiträge: 21
aberultra befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Kropff Beitrag anzeigen
Mach es so. Hol dir alle Informationen, die nicht bei drei auf den Bäumen sind. Die schreibst du dann in deine Datenbank und wertest sie später aus. Alles auf einmal zu machen, ist sicher sehr unperformant. Und wenn du aus welchen Gründen auch immer die Infos nicht bekommst, so setze bei der Domain ein Flag und probier es später noch mal.

Peter

PS. Was hast du eigentlich vor?
Das heißt ich schreibe ein script das domain und alles resultierenden Werte in eine Datenbank schreibt.

Wie regele ich hier aber das Problem, dass das Script nach 60 Sekunden noch nicht fertig ist, und bei den meisten Servern eine Response Time von 60 Sekunden nicht überschritten werden darf?

Was ich vor habe... Da müsste ich sehr weit ausholen. Dreht sich grob im Bereich Suchmaschinenoptimierung. Ich möchte halt von einer Vielzahl an Domains verschiedene Suchmaschinen relevante Daten abfragen und diese dann -wie auch immer- auswerten. Das ist aber dann wieder eine andere "Baustelle"

Grüße
Mit Zitat antworten
  #12 (permalink)  
Alt 10-06-2010, 21:32
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von aberultra Beitrag anzeigen
Wie regele ich hier aber das Problem, dass das Script nach 60 Sekunden noch nicht fertig ist, und bei den meisten Servern eine Response Time von 60 Sekunden nicht überschritten werden darf?
Ergänz z.B. deine Domain-Tabelle und eine Spalte namens "indiziert". Die werden am Beginn deines Scriptes alle auf false gesetzt. Dann grast du alle Domains ab und wenn die Daten erfasst wurden, setzt du "indiziert" auf true. Dann kannst du dich im nächsten Schritt auf die Domains konzentrieren, bei denen "indiziert" immer noch auf false steht. Ggf. schreibst du noch die Zeiterfassung in eine weitere Spalte, so kannst du Domains mit grottenlahmer Verbindung Stück für Stück aussortieren.

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #13 (permalink)  
Alt 10-06-2010, 21:39
aberultra
 Registrierter Benutzer
Links : Onlinestatus : aberultra ist offline
Registriert seit: Jun 2010
Beiträge: 21
aberultra befindet sich auf einem aufstrebenden Ast
Standard

Danke für den Tipp!

Das heißt aber, dass ich das Script öfters ausführen (/ausführen lassen muss, mittels cronjob etc) muss.

Das mit der Zeit ist hinfällig, da ich hier eine externe Seite -immer die gleiche-, im Endeffekt nur abfrage, was diese über Domain X weiß. Die Domains selbst werden dabei gar nicht aufgerufen.

Gibt es keine Möglichkeit, das ganze irgendwie zu Clustern, dass ich quasi immer nur 10 Stück abfrage, das Script gibt eine Statusmeldung zurück und startet so gesehen wieder von vorn mit den nächsten 10, und so weiter, bis alles erledigt ist?

Viele Grüße
Mit Zitat antworten
  #14 (permalink)  
Alt 10-06-2010, 21:58
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von aberultra Beitrag anzeigen
Gibt es keine Möglichkeit, das ganze irgendwie zu Clustern, dass ich quasi immer nur 10 Stück abfrage, das Script gibt eine Statusmeldung zurück und startet so gesehen wieder von vorn mit den nächsten 10, und so weiter, bis alles erledigt ist?
Das ist so schwer zu sagen. Wenn du mittendrin auf einen grottenlahmen Server stößt, ist hängen im Schacht. Du kannst das möglicherweise mit dem Neuaufruf des Scriptes umgehen. Du setzt zu Beginn einen timestamp und wenn der einen bestimmten Wert überschritten hast, so ruft du das Script mit header und Location neu auf. Dabei übergibts du dann die entsprechenden Parameter und es läuft erneut. Allerdings habe ich keine Ahnung, wie das bei cronjobs funktioniert. Das habe ich noch nie gemacht und darum fehlen mir die Erfahrungswerte. Probier es einfach mal aus.

Peter

PS: Lass dein Script notfalls mehrmals pro Nacht durchlaufen.
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #15 (permalink)  
Alt 11-06-2010, 07:44
aberultra
 Registrierter Benutzer
Links : Onlinestatus : aberultra ist offline
Registriert seit: Jun 2010
Beiträge: 21
aberultra befindet sich auf einem aufstrebenden Ast
Standard

Guten Morgen,

werde das heute mal probieren so, wie vorgeschlagen, aufzusetzen. Wie schaffe ich es während des Scriptdurchlaufes Inhalt direkt auf der Seite zu aktualisieren. (Zum Beispiel hier: X4d Data Center Position Check, hat eine Positionsabfrage und gibt immer einen Statuswert zurück, bzw. liefert zu jeden Datacenter sofort nach Abfrage ein Ergebnis dazu)?

Grüße
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Extrem (Ressourcen) aufwendiger Prozess micronax PHP Developer Forum 23 14-04-2007 14:45
kurzes problem kleineeinfache lösung Alex182 PHP Developer Forum 5 10-12-2006 00:24
Problem / Lösung floh77 PHP Developer Forum 3 20-10-2006 13:32
Suche Lösung für mein SQL Problem... Guranga PHP Developer Forum 0 20-05-2006 14:54
Newsletter (eigene Lösung) Problem seered PHP Developer Forum 3 11-07-2004 19:43

Themen-Optionen
Thema bewerten
Thema bewerten:

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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:33 Uhr.