ERLEDIGT
NEIN
NEIN
ANTWORTEN
17
17
ZUGRIFFE
471
471
EMPFEHLEN
-
Hallo!
Ich gebe in einer Schleife ein paar Links aus und prüfe diese auf Erreichbarkeit. Allerdings wird mir überall Offline ausgegeben, bis auf die letzte Ausgabe. Bei der letzten Ausgabe wird immer Online ausgegeben. Versteht das jemand?
PHP-Code:foreach ( file ( 'settings/projects.txt' ) as $project ) {
$project = explode ( '|', $project );
if ((@fopen ( $project [1], "r" ) == true)) {
echo "<img src='images/online.gif'>";
} else {
echo "<img src='images/offline.gif'>";
}
}
-
Gib einmal aus, welche Datei immer versucht wird zu öffnen. Dann siehst du zumindest mal was probiert wird.
Laut dem PHP Manual gibt fopen FALSE zurück, wenn das Öffnen fehlgeschlagen ist.
Prüfe einmal auf != FALSE anstatt auf == TRUEThere are only 10 types of people in the world — those who understand binary, and those who don't.
Mach mal einer das Licht an, ich hör nix!
Why is 6 afraid of 7? Because 7 8 9.
-
Hmm das war es leider auch nicht...

Ich denke mal, da ist ein Fehler welchen ich nicht sehe...
-
Was sagt denn die Ausgabe von $project[1] ?
There are only 10 types of people in the world — those who understand binary, and those who don't.
Mach mal einer das Licht an, ich hör nix!
Why is 6 afraid of 7? Because 7 8 9.
-
Diese gibt Links im Format: "http://www.domain.de" aus.
-
29.09.09 17:48 #6
Wie ist denn die Einstellung von allow_url_fopen?
KIDS Kinderbetreuungsdienst
Xing
"When you play the game of thrones, you win or you die. There is no middle ground."
by Cersei Lannister in "A Game Of Thrones"
-
Beides auf ON! Habe grad extra in der phpinfo() nachgeschaut.
Mich irritiert einfach, warum immer der letzte Link (obwohl dieser immer wieder ein anderer ist) als Online angezeigt wird und alle anderen als Offline!? Liegt das an der Schleife?
-
29.09.09 18:35 #8
Dann bauen wir das doch mal ein wenig um...
Was sagt denn die Ausgabe?PHP-Code:$projects = file ( 'settings/projects.txt' );
foreach ( $projects as $project )
{
$prj = explode ( '|', $project );
if ((@fopen ( $prj[1], "r" ) == true))
{
echo "<img src='images/online.gif'>";
}
else
{
echo "<img src='images/offline.gif'>";
}
}
KIDS Kinderbetreuungsdienst
Xing
"When you play the game of thrones, you win or you die. There is no middle ground."
by Cersei Lannister in "A Game Of Thrones"
-
Es ist immer noch der gleiche Fehler...
Das hatte ich bereits vorher schonmal probiert, weil ich dachte dass ein Array oder String überschrieben wird. Ist aber leider nicht der Fehler...
Funktioniert es denn bei dir?
-
Was passiert denn wenn du den Handler von fopen nimmst und einmal komplett ausliest? Eine Seite die einen HTTP-Statuscode liefert wird hier auf jeden Fall als Online angezeigt.
Zum Prüfen ob eine Seite läuft, gab es schon einmal einen ausführlichen Thread.Gebe keine Hilfe per PN, Mail, Instant Messenger etc.
und keine Copy&Paste-Lösungen - ein bisschen selbst nachdenken sollte drin sein. Konstruktivismus 4tw!
MfG, Zod
__________________
rpd Framework: Rapid Web-Engineering in PHP (Manual | Google Code)
-
29.09.09 19:00 #11
Ich bin heute auch leicht verwirrt. fopen() ist für diese Art von Untersuchung eigentlich nicht so gut geeignet. fsockopen() ist da viel schöner.
So funktioniert es, musst es nur noch mal anpassen.
PHP-Code:<?php
$projects = array('www.heise.de', 'www.google.de', 'www.tutorials.de');
foreach ( $projects as $prj )
{
if (fsockopen ( $prj, 80, $errno, $errstr, 1 ) == true)
{
echo "<img src='images/online.gif'>";
}
else
{
echo "<img src='images/offline.gif'>";
}
}
?>KIDS Kinderbetreuungsdienst
Xing
"When you play the game of thrones, you win or you die. There is no middle ground."
by Cersei Lannister in "A Game Of Thrones"
-
Danke für dein Beispiel! Das funktioniert!
Aber warum funktioniert es in meinem Beispiel nicht?
PHP-Code:foreach ( file ( 'settings/projects.txt' ) as $project ) {
$project = explode ( '|', $project );
if (@fsockopen ( $project [1], 80, $errno, $errstr, 1 ) == true) {
echo "<img src='images/online.gif'>";
} else {
echo "<img src='images/offline.gif'>";
}
}
-
29.09.09 19:11 #13
Du musst das Protokoll des Links, also http:// vom Link entfernen.
KIDS Kinderbetreuungsdienst
Xing
"When you play the game of thrones, you win or you die. There is no middle ground."
by Cersei Lannister in "A Game Of Thrones"
-
Hmm habe es nun entfernt, aber trotzdem in meinem Script keine Veränderung...
PHP-Code:if (@fsockopen ( substr ( $project [1], '7' ), 80, $errno, $errstr, 1 ) == true) {
echo "<img src='images/online.gif'>";
} else {
echo "<img src='images/offline.gif'>";
}
-
29.09.09 22:39 #15
Dann das "@" wegnehmen, damit du auch mal Fehlermeldungen angezeigt bekommst und testweise die URL ausgeben, damit du siehst, ob sie evtl. immer noch Fehler aufweist.
KIDS Kinderbetreuungsdienst
Xing
"When you play the game of thrones, you win or you die. There is no middle ground."
by Cersei Lannister in "A Game Of Thrones"
Ähnliche Themen
-
Problem mit fopen
Von 1uck3r im Forum PHPAntworten: 13Letzter Beitrag: 11.03.10, 10:41 -
fopen problem
Von Marco-P im Forum PHPAntworten: 9Letzter Beitrag: 12.07.08, 04:58 -
fopen Problem
Von Acriss im Forum PHPAntworten: 4Letzter Beitrag: 18.08.07, 13:41 -
c - fopen Problem
Von BadPhantom im Forum C/C++Antworten: 4Letzter Beitrag: 14.06.05, 15:10 -
Problem mit fopen()
Von maltor im Forum PHPAntworten: 7Letzter Beitrag: 08.12.04, 19:58





Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren