php.net
<?php
// Create a cURL handle
$ch = curl_init('http://www.example.com/');
// Execute
curl_exec($ch);
// Check HTTP status code
if (!curl_errno($ch)) {
switch ($http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE)) {
case 200: # OK
break;
default:
echo 'Unexpected HTTP code: ', $http_code, "\n";
}
}
// Close handle
curl_close($ch);
?>
Pod default napisz continue i powinno być OK i zależnie od potrzeb wyrzuć break. Pamiętaj, że możesz przerywać i kontynuować najbardziej zewnętrzne pętle. Musisz wtedy podać numer pętli zewnętrznej np. continue 2;.
Aha i lepiej byłoby raczej abyś przepisował swój kod pod cURLa, ponieważ teraz korzystasz z "file_get_html", którzy strzelam jest pod spodem file_get_contents. Wydaje mi się, że cURL w tym konkretnym zastosowaniu lepiej by się sprawdził.
Edit:
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
// curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$urls = ['http://127.0.0.1:8000/backend1.php', 'http://127.0.0.1:8000/backend2.php'];
$as_a_matter_of_fact = false;
foreach($urls as $url) { // 2
curl_setopt($ch, CURLOPT_URL, $url);
$content = curl_exec($ch);
if(!curl_errno($ch)) {
switch($http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE)) { // 1
case 200:
$as_a_matter_of_fact = true;
break;
default:
$as_a_matter_of_fact = false;
continue 2;
}
}
if($as_a_matter_of_fact == true) {
$doc = new DOMDocument();
$doc->loadHTML($content);
echo $doc->textContent . "<br />";
}
}
?>
Zamiast tych linii kodu pod ostatnim ifem możesz napisać swój kod, który wyłapie tekst ze znaczników HTML.
<div>Hello World</div>
<?php
http_response_code(404); // 404 or 200
?>
<div>Welcome</div>
Utwórz wszystkie trzy pliki w tym samym katalogu i ustaw odpowiednie ścieżki do nich. Później w pliku backend2.php zmień 404 na 200 i później z 200 na 404 i zobacz, co się stanie odświeżając stronę client1.php.
Zwróć uwagę na linię continue 2; w pliku client1.php dzięki której nie zostaje sprawdzona instrukcja warunkowa if pod spodem, tylko od razu "skacze" do swojej "definicji" i sprawdza, czy wykonywać się dalej, czy nie (pętla foreach).
hexainclude.com/ https://gynvael.coldwind.pl/