Hallo zusammen,
Ich hab hier folgendes Problem: Ich möchte ein einer Datenbank "dynamisch" alle Links zusammenfangen, die ich auf einer Website finde. Derzeit sieht das ungefähr so aus:
Mein Problem ist nun folgendes:
Das Script erkennt nur nach einem neuen Aufruf, dass neue Einträge in der Tabelle vorhanden sind.... Werden zum Beispiel durch die Initialen Checks X neue Links in der Tabelle angelegt bekommt der Select
nur ein mysql_num_rows = 0 und dementsprechend stirbt die while schleife wunschgemäß. Beim nächsten Start sind es dann wieder mysql_num_rows = X und die while schleife wird abgearbeitet.... wenn dann allerdings wieder die anzahl der zeilen abgefragt wird --> 0
Hat irgendwer eine Idee wo mein Fehler liegen könnte?
Hoffe ich hab mich verständlich ausdrücken können
LG
spinnerle
Ich hab hier folgendes Problem: Ich möchte ein einer Datenbank "dynamisch" alle Links zusammenfangen, die ich auf einer Website finde. Derzeit sieht das ungefähr so aus:
PHP:
<?
$geturls2check=("SELECT url_id, url, keywords from url_table WHERE(spider_lastrun < $timeminimum OR spider_lastrun IS NULL) AND kd_nr IS NOT NULL");
$queryurls2check=mysql_query($geturls2check) OR die (mysql_error());
while ($urls2check = mysql_fetch_object($queryurls2check))
{
$howmuchisthefish = "1";
$url_idtotal = "0";
$url2check = $urls2check->url_id;
echo "Url2check: $url2check $urls2check->url\n";
// Auf Existenz der Tabelle prüfen:
$result = mysql_query("SHOW TABLES LIKE 'spider_$url2check'");
if (mysql_num_rows($result) > 0)
{
$spalteleeren =mysql_query("UPDATE spider_$url2check SET checked = NULL");
}
else
{
echo "Tabelle erstellen";
$tabelleerstellen = mysql_query("CREATE TABLE `spider_$url2check` (
`file` varchar(256) NULL default '',
`checked` varchar(20) NULL default '',
`modified_date` varchar(20) default '',
`feld1` varchar(250) default NULL
) TYPE=MyISAM;");
$initialcheck = "true";
}
if ($initialcheck == "true")
{
echo "Initialen Check 1 von $url2check gestartet \n";
$file = "http://www.$urls2check->url";
include 'modul_spider.php';
echo "Initialen Check 2 von $url2check gestartet \n";
$file = "http://$urls2check->url";
include 'modul_spider.php';
//hier werden die Links der Startseite gesammelt und in die Tabelle sider_$url2check eingetragen (das geht definitiv)
echo "Ersterfassung von $url2check beendet \n";
$initialcheck = '';
}
$getnexturls=("SELECT * FROM spider_$url2check WHERE checked IS NULL ");
$querynexturls=mysql_query($getnexturls) OR die (mysql_error());
$howmuchisthefish = mysql_num_rows($querynexturls);
echo "Einträge: $howmuchisthefish";
while ($howmuchisthefish>0)
{
echo "--> Suche nach spider_$url2check Einträgen \n";
sleep (1);
$getnexturls=("SELECT * FROM spider_$url2check WHERE checked IS NULL");
$querynexturls=mysql_query($getnexturls) OR die (mysql_error());
$howmuchisthefish = mysql_num_rows($querynexturls);
echo "So viele Einträge: $howmuchisthefish \n";
while ($nexturls =mysql_fetch_object($querynexturls))
{
echo "Normaler Check von $url2check gestartet \n";
$file = $nexturls->file;
$checked=time();
$updatechecked="UPDATE spider_$url2check SET checked = '$checked' WHERE file = '$file'";
$update = (mysql_query($updatechecked) OR die (mysql_error()));
include 'modul_spider.php';
$url_idtotal++;
echo "Bisher wurden $url_idtotal Seiten von $howmuchisthefish für $urls2check->url gespidert \n";
}
mysql_free_result($querynexturls);
$updatechecked=(mysql_query("UPDATE spider_log SET errors = '$url_idfehler' WHERE url_id = '$urls2check->url_id'"));
}
}
Mein Problem ist nun folgendes:
Das Script erkennt nur nach einem neuen Aufruf, dass neue Einträge in der Tabelle vorhanden sind.... Werden zum Beispiel durch die Initialen Checks X neue Links in der Tabelle angelegt bekommt der Select
PHP:
$getnexturls=("SELECT * FROM spider_$url2check WHERE checked IS NULL");
Hat irgendwer eine Idee wo mein Fehler liegen könnte?
Hoffe ich hab mich verständlich ausdrücken können
LG
spinnerle