Domanda

Ho uno script che controlla le risposte dai server HTTP utilizzando le classi HTTP PEAR.Tuttavia, di recente ho scoperto che lo script fallisce sui server FTP (e probabilmente su tutto ciò che non è HTTP o HTTPS).Ho provato Google, ma non ho visto script o codici che restituissero il codice di stato del server da server diversi dai server HTTP.

Come posso scoprire lo stato di un newsgroup o di un server FTP utilizzando PHP?

MODIFICARE:Vorrei chiarire che mi interessa solo la possibilità di leggere da un server FTP e dalla directory che specifico.Ho bisogno di sapere se il server è morto/andato, non sono autorizzato a leggere, ecc.

Tieni presente che, sebbene la maggior parte delle volte sia indipendente dalla lingua, l'intero sito Web è basato su PHP, quindi una soluzione PHP sarebbe la migliore per una facile manutenibilità ed estensibilità in futuro.

È stato utile?

Soluzione

Sfortunatamente, HTTP funziona in modo leggermente diverso rispetto a FTP.Sebbene entrambi possano apparire uguali nel tuo browser, HTTP funziona sulla base dell'URI (ad es.per accedere alla risorsa A, hai un identificatore che ti dice come accedervi).

FTP è gestito da server molto vecchia scuola.Anche l'FTP anonimo è un po' un trucco, dal momento che fornisci comunque un nome utente e una password, viene semplicemente definito come "anonimo" e il tuo indirizzo email.

Controllare se un server FTP è attivo significa controllare

  1. Che puoi connetterti al server FTP

    if (!($ftpfd = ftp_connect($hostname))) { ... }

  2. Che puoi accedere al server:

    if (!ftp_login($ftpfd, $username, $password)) { ... }

  3. Quindi, se sono presenti ulteriori risorse sottostanti a cui è necessario accedere per verificare se un particolare sito è attivo, utilizzare un'operazione appropriata su di esse.per esempio.su un file, magari usare ftp_mdtm() per ottenere l'ora dell'ultima modifica o su una directory, vedere se ftp_nlist() lavori.

Altri suggerimenti

Non sarebbe più semplice utilizzare la funzionalità PHP FTP* integrata piuttosto che provare a crearne una propria?Se l'URI proviene da una fonte fuori dal tuo controllo, dovresti controllare la definizione del protocollo (http:// o ftp://, ecc.) per determinare quale funzionalità utilizzare, ma questo è abbastanza banale.Se ora è specificato il protocollo (dovrebbe davvero esserci!), allora potresti provare a impostare come predefinito http.

Se vuoi leggere risposte specifiche dovrai aprire un socket e leggere/scrivere i dati manualmente.

<?php
$sock = fsockopen($hostname, $port);
?>

Quindi dovrai caricare/scaricare i dati avanti e indietro.
Ciò richiederà di leggere il protocollo FTP.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top