Um zu prüfen, ob ein Server erreichbar ist habe ich Folgendes gestrickt: PHP: $source = "http://www.gambio.de";$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $source); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);$dataSource = curl_exec($ch); $infoSource = curl_getinfo($ch);curl_close($ch);if ($infoSource['http_code'] == 200) { echo 'FEIN!';} else { echo 'Schitt - Server put!';} Es tut was es soll. Frage: Ist das so universell einsetzbar - oder fangen da evtl. Server, auf denen dies Script läuft, an zu hüsteln?
Wir verwenden (Link nur für registrierte Nutzer sichtbar.) und sind sehr zufrieden damit. Pingdom pingt den Server in definierten Intervallen. Bei 404 gibt es eine schnelle Benachrichtigung per Mail und mehr.
Ja - schon richtig. Nur brauche ich in einem Projekt nur "true/false" um ggf. weitere Aktion zu steuern.
Kommt drauf an auf welchen Servern du das nutzen willst. Wenn das alles Server sind, auf denen auch der Shop läuft, sollte es da denke ich nicht großartig Probleme geben, da wir ja auch cURL verwenden. Ein Problem kann das nur werden, wenn du das auf einem Server verwenden willst, auf dem kein cURL verfügbar ist.
Es sind nur "Shop-Server". Wobei dieser 2-Zeiler zu gleichen Ergebnissen führt.. PHP: $requestUrl = 'dingsbumm.eu'; $fp = @fsockopen($requestUrl, 80, $errno, $errstr, 10);if ($fp) { echo 'Fein - erreichbar'; }
… die sowieso cURL können müssen. 3-Zeiler, da fehlt ein fclose($fp). PHP: $requestUrl = 'dingsbumm.eu'; $fp = @fsockopen($requestUrl, 80, $errno, $errstr, 10);if ($fp) { echo 'Fein - erreichbar'; } $requestUrl müsste $requestHost heißen, denn „dingsbumm.eu“ ist kein URL; „http://dingsbumm.eu/“ wäre ein URL. Ansonsten tut das nicht ganz das gleiche wie die cURL-Variante. Mit cURL prüfst du, ob eine Ressource per HTTP abrufbar ist. Mit dieser fsockopen()-Variante prüfst du nur, ob auf TCP-Port 80 eine Verbindung zustande kommt. Im Shopsystem kannst du übrigens auch einfach den ConnectChecker verwenden: PHP: function checkURL($url){ $timeout = 10; $cc = MainFactory::create('ConnectChecker'); $reachable = false; try { $connectinfo = $cc->check_connect($url, $timeout); $reachable = true; } catch(Exception $e) { $reachable = false; $error_message = $e->getMessage(); } return $reachable;}
Ja wie geil ist das denn? Habt Ihr womöglich für diesen ganzen Kram... PHP: $curl = curl_init();curl_setopt($curl, CURLOPT_URL, $UrlFirstCheck);curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);curl_setopt($curl, CURLOPT_HEADER, 0);curl_setopt($curl, CURLOPT_TIMEOUT, 30);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);$FirstResultCheck = curl_exec($curl);curl_close($curl); ... was Hübsches in der Schublade, dass einfach nur "$FirstResultCheck" zurückgibt
Da muss aber noch ein Timeout hineie, für den Fall, dass der Server nicht erreichbar ist. Sonst bleibt das Script einfach hängen...
Ich zieh die Frage zurück! PHP: ....try { $connectinfo = $cc->check_connect($url, $timeout); $reachable = 'true'; $connectinfo['response']; <<<<<<<!!!!!!!! :o:D}... Bleibt die Frage: Ab wann gibbte datt "ConnectChecker" ?
Der müsste mit Gambio GX2 v2.1.0.0 in den Core gewandert sein. War aber vorher schon Teil des PayPalNG-Paketes. Für das Abrufen von Ressourcen kannst du z.B. die REST-Klassen verwenden: PHP: <?phprequire 'includes/application_top.php';try{ $request = MainFactory::create('RestRequest', 'GET', 'http://www.gambio.de/'); $restservice = MainFactory::create('RestService'); $restservice->setTimeout(10); $response = $restservice->performRequest($request);}catch(Exception $e){ $errorMessage = $e->getMessage();}?><!DOCTYPE html><html><head> <title>REST-Beispiel</title></head><body><?php if(!empty($errorMessage)): ?> <h2>ERROR</h2> <p><?= $errorMessage ?></p><?php else: ?> <h2>Response</h2> <pre><?php echo htmlspecialchars((string)$response); ?></pre><?php endif ?></body></html> Die REST-Klassen sind ab v2.4 im Core (kamen mit PayPal3). Den reinen Response-Body bekommt man übrigens mit $response->getResponseBody().