2008-08-12 36 views
5

私はPEAR HTTPクラスを使ってHTTPサーバーからの応答をチェックするスクリプトを持っています。しかし、私は最近、スクリプトがFTPサーバー(そしておそらくHTTPやHTTPSではないもの)で失敗することを発見しました。私はGoogleを試しましたが、HTTPサーバー以外のサーバーからサーバーステータスコードを返すスクリプトやコードは見られませんでした。PHPスクリプトによるFTPステータスコードの確認

PHPを使用してニュースグループまたはFTPサーバーの状態を調べるにはどうすればよいですか?

編集:私は、FTPサーバーと指定したディレクトリから読み取る機能にのみ関心があることを明確にする必要があります。サーバーが死んでいるかどうかを知る必要があります。私は読む権限がありません。

ほとんどの時間は言語に依存しませんが、Webサイト全体がPHPで駆動されるためPHPソリューションは、今後のメンテナンス性と拡張性を容易にするために最適です。

答えて

2

HTTPは残念ながらしかしFTPよりもわずかに異なる動作を参照してください。どちらもブラウザで同じように見えるかもしれませんが、HTTPはURIに基づいて動作します(つまり、リソースAにアクセスするには、アクセスする方法を示す識別子があります)。

FTPは非常に古い学校サーバー駆動型です。匿名FTPでも、ユーザー名とパスワードを提供しているので、ちょっとしたハックです。これはちょうど "anonymous"と電子メールアドレスとして定義されています。

FTPサーバを使用すると、FTPサーバーは、サーバーにログインすることができます

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

  • に接続することができます

    1. をチェックする手段をアップしているかどうかの確認:

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

    2. 次に、特定のサイトが稼動しているかどうかをテストするためにアクセスする必要があるさらに基礎となるリソースがある場合は、適切な操作を使用します。例えばファイル上では、ftp_mdtm()を使用して、最後に変更された時刻を取得するか、またはディレクトリでftp_nlist()が動作するかどうかを確認してください。

  • +0

    デフォルトでは、これらのFTP関数は、少なくとも私が使用したシステムでは、PHPがコンパイルされると有効になりません。 –

    0

    独自のPHP FTP *機能を使用する方が、独自のものを使用する方が簡単なのでしょうか? URIがコントロール外のソースから来ている場合は、使用する機能を決定するためにプロトコール定義(http://またはftp://など)をチェックする必要がありますが、それはかなり簡単です。今、protocalが指定されている場合(実際にあるはずです!)、httpにデフォルト設定しようとする可能性があります。

    0

    特定の応答を読みたい場合は、ソケットを開いてデータを手動で読み書きする必要があります。

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

    次に、データを自由に/自由に処理する必要があります。
    これにより、FTPプロトコルを読み上げる必要があります。

    関連する問題