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 20-03-2005, 17:35
wyros
 Newbie
Links : Onlinestatus : wyros ist offline
Registriert seit: May 2004
Beiträge: 6
wyros ist zur Zeit noch ein unbeschriebenes Blatt
Standard Problem beim Spidern

PHP-Code:
<?php

function crawl($Site$Follow)
{
$file file($Site);

    foreach(
$file as $n)
    {
    
$row "".$row."\n".$n."";
    }
        
    
preg_match_all("!<a (?:.*)href=\"(.*)\"(?:.*)>(.*)</a>!isU",$row,$matches);
    
    for(
$i 0$i count($matches[1]); $i++)
    {
    print 
"".$i." ".$matches[1][$i]."<br>";
    
    if(
$Follow != 0)
    {
    
$Follow $Follow--;
    
crawl($matches[1][$i], $Follow);
    }
    }
}

crawl($Seite$Follow);
    
?>
Was das Script machen soll is klar, Seite auslesen, Links Suchen, Links ggf. auch auslesen, Links suchen ... [...]

aber es will nicht so ganz...

Code:
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm
0http://www.flazh.de/index.htm

Fatal error: Allowed memory size of 8388608 bytes exhausted 
(tried to allocate 35 bytes) in /var/www/web4/html/spider.php on line 5
http://h4xx0rn.info/spider.php?Follo...a/bmptoepa.htm
das war der Aufruf

Wo liegt der Fehler ?


MfG wyros, danke für die Hilfe im voraus =)

edit: Achja, es geht mir nicht um den Speicherfehler, woher der kommt weiß ich. Es geht darum, dass immer das gleiche angezeigt wird.

Geändert von wyros (20-03-2005 um 17:42 Uhr)
Mit Zitat antworten
freelancermap.de - IT Projektvermittlung für Selbständige und Freiberufler
  #2 (permalink)  
Alt 20-03-2005, 20:26
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
edit: Achja, es geht mir nicht um den Speicherfehler, woher der kommt weiß ich. Es geht darum, dass immer das gleiche angezeigt wird.
hat beides die gleiche ursache!

aber mehr sag ich nem "h4xx0r" nicht. die sind zu cool für mich.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #3 (permalink)  
Alt 20-03-2005, 21:00
wyros
 Newbie
Links : Onlinestatus : wyros ist offline
Registriert seit: May 2004
Beiträge: 6
wyros ist zur Zeit noch ein unbeschriebenes Blatt
Standard

omg, noch nie was von fundomain gehört -.- ?
Mit Zitat antworten
  #4 (permalink)  
Alt 20-03-2005, 22:33
treo
 Newbie
Links : Onlinestatus : treo ist offline
Registriert seit: Jan 2005
Ort: Mainz
Beiträge: 44
treo ist zur Zeit noch ein unbeschriebenes Blatt
treo eine Nachricht über ICQ schicken
Standard

Wo wird bei dir eigentlich $Follow definiert?
Mit Zitat antworten
  #5 (permalink)  
Alt 20-03-2005, 22:37
wyros
 Newbie
Links : Onlinestatus : wyros ist offline
Registriert seit: May 2004
Beiträge: 6
wyros ist zur Zeit noch ein unbeschriebenes Blatt
Standard

beim Aufruf

MfG
Mit Zitat antworten
  #6 (permalink)  
Alt 20-03-2005, 23:34
Shurakai
 Master
Links : Onlinestatus : Shurakai ist offline
Registriert seit: May 2004
Ort: Bergisch Gladbach
Beiträge: 3.084
Shurakai ist zur Zeit noch ein unbeschriebenes Blatt
Standard

print_r($matches); hilft dir vllt.

btw:

PHP-Code:
$row "".$row."\n".$n."";
// schöner:
$row .= "\n".$n;

$Follow $Follow--;

// das ist identisch...
$Follow--; 
und immer so um die 4 leerzeichen einrücken...
Mit Zitat antworten
  #7 (permalink)  
Alt 21-03-2005, 00:39
Weltenbrand
 Newbie
Links : Onlinestatus : Weltenbrand ist offline
Registriert seit: Mar 2005
Beiträge: 1
Weltenbrand ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also ich bin ja kein Fan von sich selbst aufrufenden Funktionen... (Vorallem da es ewig dauert bis die UR-Funktion wieder geschlossen wird)

Mein Ansatz ist - aus meiner Sicht - viel genialer

[Eigens für dich zusammengebastelt, nicht für produktive Sachen gedacht, soll heißen ein paar Abfragen fehlen und das Ganze ist auch nicht optimal gelöst ]

Geändert von Weltenbrand (10-03-2012 um 18:27 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 21-03-2005, 14:24
wyros
 Newbie
Links : Onlinestatus : wyros ist offline
Registriert seit: May 2004
Beiträge: 6
wyros ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Danke für den Beitrag und die Mühe Matt, mir wäre aber lieber wenn ich wenn ich wüsste was bei meinem Script der fehler ist ...

Ohne den eigenaufruf funktioniert mein Script =(

Helft mir bitte ...




MfG wyros
Mit Zitat antworten
  #9 (permalink)  
Alt 21-03-2005, 14:31
FloB
 Junior Member
Links : Onlinestatus : FloB ist offline
Registriert seit: Aug 2004
Ort: Freiburg
Beiträge: 167
FloB ist zur Zeit noch ein unbeschriebenes Blatt
FloB eine Nachricht über ICQ schicken
Standard

@wyros: Vielleicht mal alle Links in ein Array einfügen und dann per in_array() schauen, ob der Link schon drinne ist ... wenn das zu keinem Ergebniss kommt, dann ist irgendwo ein Fehler ...
__________________
Bevor ich nicht in einem angemessenen Alter bin, werde ich keine Witze mehr über schmalle machen!
- Zitat Berni
Mit Zitat antworten
  #10 (permalink)  
Alt 21-03-2005, 15:11
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Du übergibst der Funktion beim Aufruf eine URL, diese wird geparst, alle Links in einen Array geschrieben und mit dem ersten Eintrag wird die Funktion erneut aufgerufen. Sie liest nun die neue Seite, parst sie wieder in den Array, aber das erste Element ist immer noch das gleiche. Du rufst die Funktion also immer wieder mit dem gleichen Argument auf.
Jede Zeile deiner Ausgabe ist also aus einen Durchlauf von crawl(), salopp gesagt tritt dein Script also auf der Stelle - solange bis der Speicher nicht mehr ausreicht.
Die Lösung wurde eben schon genannt - du darfst Links nicht einfach so in den Array aufnehmen, sondern mußt sicherstellen, dass sie noch nicht darin enthalten oder zumindest noch nicht abgearbeitet wurden.
Mit Zitat antworten
Antwort

Lesezeichen


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

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

PHP Marktplatz-Software
PHP Marktplatz-SoftwareEs hat sich viel getan! Die neue Version 7.5.9 unserer PHP Marktplatz-Software ebiz-trader steht ab sofort zur Verfügung.

28.10.2019 | Berni

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni


 

Aktuelle PHP Scripte

Microweber CMS

Open source, drag and drop website builder

13.01.2020 Berni | Kategorie: HTML5/ EDITOR
PhoneGap Apps mit JS, CSS3 und HTML5 erstellen ansehen PhoneGap Apps mit JS, CSS3 und HTML5 erstellen

PhoneGap, Framework zur Erstellung hybrider Applikationen für mobile Endgeräte.

13.01.2020 Berni | Kategorie: App-Entwicklung
Bo)Tickets

Bo)Tickets bietet Ihnen eine Schnittstelle für Kundenanfragen an. In dem Script definieren Sie Supportbereiche, also zum Beispiel „Technik, Buchhaltung, Support“. Ihre Kunden können dann über ein Formular eine Anfrage abschicken.

31.12.2019 bocombo | Kategorie: PHP/ Ticketsystem
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:02 Uhr.