2008-08-12 7 views
5

J'ai un script qui vérifie les réponses des serveurs HTTP à l'aide des classes HTTP PEAR. Cependant, j'ai récemment constaté que le script échoue sur les serveurs FTP (et probablement tout ce qui n'est pas HTTP ou HTTPS). J'ai essayé Google, mais je n'ai vu aucun script ou code renvoyant le code d'état du serveur à d'autres serveurs que les serveurs HTTP.Vérification des codes d'état FTP avec un script PHP

Comment puis-je connaître l'état d'un groupe de discussion ou d'un serveur FTP en PHP?

EDIT: Je dois préciser que je ne m'intéresse qu'à la possibilité de lire depuis un serveur FTP et le répertoire que je spécifie. J'ai besoin de savoir si le serveur est mort/parti, je ne suis pas autorisé à lire, etc.

S'il vous plaît noter que, bien que la plupart du temps je suis agnostique, l'ensemble du site est basé sur PHP, donc une solution PHP serait la meilleure pour faciliter la maintenabilité et l'extensibilité dans le futur.

Répondre

2

HTTP fonctionne un peu différemment que FTP mais malheureusement. Même si les deux peuvent sembler les mêmes dans votre navigateur, HTTP fonctionne sur la base de l'URI (c'est-à-dire pour accéder à la ressource A, vous avez un identifiant qui vous indique comment y accéder).

FTP est un serveur très old school. Même FTP anonyme est un peu un hack, puisque vous fournissez toujours un nom d'utilisateur et un mot de passe, il est simplement défini comme "anonyme" et votre adresse e-mail.

Vérification si un serveur FTP est en place des moyens de contrôle

  1. que vous pouvez vous connecter au serveur FTP

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

  2. que vous pouvez vous connecter au serveur:

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

  3. Ensuite, s'il existe d'autres ressources sous-jacentes auxquelles vous devez accéder pour tester si un site particulier est actif, utilisez une opération appropriée. par exemple. sur un fichier, peut-être utiliser ftp_mdtm() pour obtenir la dernière date de modification ou dans un répertoire, voir si ftp_nlist() fonctionne.

+0

Il convient de noter que, par défaut, ces fonctions FTP ne sont pas activées lorsque PHP est compilé, au moins sur les systèmes que j'ai utilisés. –

0

Ne serait-il pas plus simple d'utiliser la fonctionnalité PHP FTP * intégrée que d'essayer de rouler la vôtre? Si l'URI provient d'une source en dehors de votre contrôle, vous devrez vérifier la définition de protocal (http: // ou ftp: //, etc) afin de déterminer quelle fonctionnalité utiliser, mais c'est assez trivial. S'il y a maintenant un protocal spécifié (il devrait y en avoir!), Alors vous pouvez essayer d'utiliser http.

0

Si vous voulez lire des réponses spécifiques, vous devrez ouvrir un socket et lire/écrire des données manuellement.

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

Ensuite, vous aurez à fput/fread les données de va-et-vient.
Cela vous demandera de lire le protocole FTP.

Questions connexes