sh0x
Erfahrenes Mitglied
Hallo PHP-Gemeinde,
ich möchte ein kleines PHP Script schreiben, dass eine bestimmte Webseite abruft und deren Inhalt in einem String speichert.
Das hat folgenden Hintergrund. Wir haben ein Forum, das einen Thread mit 5000 Seiten hat. Das Forum bietet nur eine Threadsuche. Ich suche eine bestimmte Seite in diesem Thread, aber möchte nicht jede der 5000 Seiten ansurfen. Da dachte ich mir, dass man einfach ein PHP Script schreiben könnte, was alle diese 5000 Seiten durchgeht und nach einem Stichwort durchsucht. Also automatisiert abruft (jeder Seite wird ein GET-Parameter 1-5000 übergeben, deswegen kann man das gut in eine Schleife packen).
Leider habe ich keine Erfahrung mit Sockets. Vielleicht wisst ihr, wie man das macht.
Auf php.net habe ich ein Script gefunden. Nur leider funktioniert das bei mir nicht. Die Fehlermeldung lautet immer:
Das PHP Script, das die obigen Fehlermeldungen ausgibt sieht wie folgt aus:
Freue mich über jeden Beitrag, der mich weiter bringt.
Liebe Grüße,
sh0x
ich möchte ein kleines PHP Script schreiben, dass eine bestimmte Webseite abruft und deren Inhalt in einem String speichert.
Das hat folgenden Hintergrund. Wir haben ein Forum, das einen Thread mit 5000 Seiten hat. Das Forum bietet nur eine Threadsuche. Ich suche eine bestimmte Seite in diesem Thread, aber möchte nicht jede der 5000 Seiten ansurfen. Da dachte ich mir, dass man einfach ein PHP Script schreiben könnte, was alle diese 5000 Seiten durchgeht und nach einem Stichwort durchsucht. Also automatisiert abruft (jeder Seite wird ein GET-Parameter 1-5000 übergeben, deswegen kann man das gut in eine Schleife packen).
Leider habe ich keine Erfahrung mit Sockets. Vielleicht wisst ihr, wie man das macht.
Auf php.net habe ich ein Script gefunden. Nur leider funktioniert das bei mir nicht. Die Fehlermeldung lautet immer:
Code:
OK. Versuche, eine Verbindung zu '81.209.148.33' auf Port '80' aufzubauen ...
Warning: socket_connect() [function.socket-connect]: unable to connect [0]: Ein Verbindungsversuch ist fehlgeschlagen, da die Gegenstelle nach einer bestimmten Zeitspanne nicht ordnungsgemäß reagiert hat, oder die hergestellte Verbindung war fehlerhaft, da der verbundene Host nicht reagiert hat. in C:\Programme\xampp\htdocs\pagefinder\index.php on line 22
OK. Einen HTTP HEAD Request senden ...
Warning: socket_write() [function.socket-write]: unable to write to socket [0]: Eine Anforderung zum Senden oder Empfangen von Daten wurde verhindert, da der Socket nicht verbunden ist und (beim Senden über einen Datagrammsocket mit einem sendto-Aufruf) keine Adresse angegeben wurde. in C:\Programme\xampp\htdocs\pagefinder\index.php on line 35
OK. Die Antwort lesen:
Warning: socket_read() [function.socket-read]: unable to read from socket [0]: Eine Anforderung zum Senden oder Empfangen von Daten wurde verhindert, da der Socket nicht verbunden ist und (beim Senden über einen Datagrammsocket mit einem sendto-Aufruf) keine Adresse angegeben wurde. in C:\Programme\xampp\htdocs\pagefinder\index.php on line 39
Den Socket schliessen ...OK.
Das PHP Script, das die obigen Fehlermeldungen ausgibt sieht wie folgt aus:
PHP:
<?php
error_reporting (E_ALL);
echo "<h2>TCP/IP Verbindung</h2>\n";
/* Den Port des WWW-Dienstes holen. */
$service_port = getservbyname ('www', 'tcp');
/* Die IP-Adresse des Zielhosts holen. */
//$address = gethostbyname ('www.gmx.net');
$address = "81.209.148.101";
/* einen TCP/IP Socket erzeugen. */
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_set_nonblock($sock);
if ($socket < 0) {
echo "socket_create() fehlgeschlagen: Grund: " . socket_strerror ($socket) . "\n";
} else {
echo "OK.\n";
}
echo "Versuche, eine Verbindung zu '$address' auf Port '$service_port' aufzubauen ...";
$result = socket_connect($socket, $address, $service_port);
if ($result < 0) {
echo "socket_connect() fehlgeschlagen.\nGrund: ($result) " . socket_strerror($result) . "\n";
} else {
echo "OK.\n";
}
$in = "GET / HTTP/1.0\r\n";
$in .= "Host: ".$address."\r\n";
//$in .= "Connection: Close\r\n\r\n";
$out = '';
echo "Einen HTTP HEAD Request senden ...";
socket_write($socket, $in, strlen ($in));
echo "OK.\n";
echo "Die Antwort lesen:\n\n";
while ($out = socket_read ($socket, 2048)) {
echo $out;
}
echo "Den Socket schliessen ...";
socket_close ($socket);
echo "OK.\n\n";
?>
Freue mich über jeden Beitrag, der mich weiter bringt.
Liebe Grüße,
sh0x