Problem mit WebCrawler
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
auslese
code
ende
fehlermeldung
fenster
folgenden code
limit
machen
memory
mus
ordern
regel
set
speichern
start
text
url
verarbeitung
verwendeten speicher
zeile
-
Hi!
Hab ein Problem: Wenn ich folgenden Code ausführe
<?php function db_conn() { if($db_link = mysql_connect('localhost', 'root', '')) { if(mysql_select_db('suchmaschine')) { return true; } } } function delete_tags($source) { preg_match("/<script(.*)>(.*)<\/script>/", $source, $script); $str = strip_tags($source); $str = str_replace($script, "", $str); return $str; } // Titel auslesen function read_title($source) { preg_match_all('~<title>(.*)</title>~Uis', $source, $output_title); $title = $output_title[1]; return $title; } function get_links($source) { $pattern = '=^(.*)<a(.*)href\="?(\S+)"([^>]*)>(.*)</a>(.*)$=msi'; $count = 0; $links = array(); while (preg_match($pattern, $source, $txt)) { $links[$count] = $txt[3]; $count++; } } function save_links($links) { foreach ($links as $link) { $sql = "INSERT INTO seiten_bevorstehend (url) VALUES ('". $link. "');"; mysql_query($sql) or die(mysql_error(). "<br>1<br>". $sql); } } function is_site_toread() { $sql = "SELECT * FROM seiten_bevorstehend ORDER BY id ASC LIMIT 1;"; $result = mysql_query($sql); if ($result) { if ($item = mysql_fetch_object($result)) { return $item; } } } function del_old_site($id) { mysql_query("DELETE FROM seiten_bevorstehend WHERE id = ".$id." LIMIT 1") OR die(mysql_error(). "<br>3"); } function check_stop() { $fp = fopen("control.txt", "r"); if ($fp) { $zeile = fgets($fp, 1050); fclose($fp); } if($zeile=='stop') { echo 'Das Script wurde mit der Kontrolldatei abgebrochen, das Fenster kann jetzt geschlossen werden.'; return false; } else { return true; } } function isset_site($url) { $sql = "SELECT * FROM seiten WHERE url = '". $url. "';"; $result = mysql_query($sql); if ($item = mysql_fetch_object($result)) { if(empty($item->id)) { return false; } else { return true; } } } function save_content($title, $url, $text, $pritority) { mysql_query("INSERT INTO seiten (titel, url, inhalt, priority) VALUES ('".$title."', '".$url."', '".htmlentities(str_replace("'", "\'", $text))."', '".$pritority."');") or die(mysql_error(). "<br>5"); } function take_links($source) { preg_match_all("!<a.*?href=\"([^\"]*)\"[^>]*>(.*?)</a>!", $source, $links); return $links; } function update_priority($url) { mysql_query("UPDATE seiten SET priority = priority + 1 WHERE url = '".$url."' LIMIT 1;") OR die(mysql_error()); } // funktionsende // hier geht die Verarbeitung los function start() { $count = 0; if (db_conn() == true) { $site = is_site_toread(); if ($site != NULL) { if (!isset_site($site->url)) { $code = implode("", file($site->url)); $title = read_title($code[0]); $url = $site->url; $text = delete_tags($code); save_content($title, $url, $text, 1); save_links(get_links($code)); del_old_site($site->id); $count++; } else { del_old_site($site->id); update_priority($site->url); } } else { echo 'Fehler! Keine Seiten mehr in der Vorratstabelle! '; $ERROR = true; } if (is_site_toread() == true) { if ($count < 100) { start(); } elseif (check_stop() == true) { echo "Script wurde durch Kontroldatei beendet. "; $ERROR = true; return false; } } } else { echo 'DB-Verbindung nicht erfolgreich. '; $ERROR = true; } if($ERROR==false) start(); else echo 'Script abgebrochen.'; } start(); ?>
bekomme ich diese Fehlermeldung:
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 1033 bytes) in F:\server_default\robot.php on line 35
Kann mir jemand sagen, was da falsch ist?
Grüße, dynamic-search -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Sagt die Fehlermeldung doch mehr als eindeutig. Wer seinen Speicher nicht freigibt, der lässt ihn zwangsläufig überlaufen. Bei Fileoperationen mus sman in aller Regel den Speicher vorsichtshalber selbst freigeben, das macht PHP nicht für einen. Erst am Ende der Ausführung gibt PHP den verwendeten Speicher wieder frei. Alles was von Start bis Ende an Speicher angefragt wird, wird nicht selbst freigegeben!
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage