Autor Zpráva
jtfcobra
Profil
Ahoj jak zjistenim zda je dostupna IP adresa neb web?

Pres PHP? Pingen nebo jak by to slo?

if ($ip = 'xxxxx') ???
pcmanik
Profil
jtfcobra:
Skúšal si vyhľadávanie?
juriad
Profil
jtfcobra:
Předpokládejme, že chceš řešení v PHP.
Dostupnost můžeš zjistit na několika úrovních:
1) zavoláním externího programu ping; toto závisí na operačním systému, který používáš. Tímto otestuješ, zda daná IP adresa existuje. Některé servery mohou mít zakázané odpovědi na ping, takže u nich ti to nepomůže.
2) zkusit se připojit na nějaký port pomocí TCP. Pokud se spojení podaří zajistit, pak server s touto adresou na tomto portu komunikuje. http má port 80.
3) několik webů může běžet pod jednou IP adresou, takže tam musíš jít ještě o stupeň dál a opravdu se dotázat, aby ti daný web něco skutečně poslal.
Server může stále být dostupný pro UDP, tam dostupnost poznáš jen tak, že ti na tvoji zprávu odpoví, což vůbec není samozřejmé.

Možná by pomohlo, kdybys napsal, k čemu je toto zjištění dostupnosti, a co vůbec chceš testovat. Zda máš připojení k internetu na domácím serveru? Zda běží nějaký cizí web? Zda ti běží minecraftový server kdesi?
Snažíš se řešit problém rozpoznání, zda konkrétní server/web běží, nebo ti jde o teoretickou otázku, jak o obecně poznat?
jtfcobra
Profil
Ne myslim to takle kdyz chci neco odeslat zapnuti treba xxxx/set=1 a potrebuji vedit zda je xxxx dostupne?existuje neco v php?
juriad
Profil
jtfcobra:
Nemusíš to vědět předem. Prostě to zkusíš a uvidíš podle výsledku. V takovém případě ten nastavovací skript samozřejmě vypíše, zda se mu operace povedla (v tomto případě ok).
$vysledek = file_get_contents('http://example.com/?set=1');
if ($vysledek = 'ok') {
 ...
}
Joker
Profil
jtfcobra:
Ne myslim to takle kdyz chci neco odeslat zapnuti treba xxxx/set=1 a potrebuji vedit zda je xxxx dostupne?

Tak nějak z principu nelze ověřit dostupnost konkrétní adresy jinak, než že se prostě ta adresa zavolá.

I když daný server odpovídá na ping, pořád nemusí ta adresa být dostupná, například mohl spadnout webový server, nějak se smazal ten skript, a podobně.
jtfcobra
Profil
$dostupnost = file_get_contents('http://xxx/set.xml'); if ($dostupnost = 'ok') { echo 'Server je dostupny';} else { echo 'Server je nedostupny';} ;


Warning: file_get_contents(xxx/set.xml): failed to open stream: Connection timed out in /data/web/test.php on line 11
Server je dostupny


Takle to nefunguje


Tak funguje tohle
$url='http://xxx/set.xml';
$ch=curl_init();
$timeout=5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$result=curl_exec($ch);
curl_close($ch);
if ($result=='') {echo 'Nic';} else {echo 'Obsah';};
Davex
Profil
jtfcobra:
Takle to nefunguje
Protože je špatně ta podmínka a místo porovnání se přiřazuje hodnota do proměnné.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: