6

PEAR HTTP クラスを使用して HTTP サーバーからの応答をチェックするスクリプトがあります。しかし、最近、スクリプトが FTP サーバー (およびおそらく HTTP または HTTPS 以外のもの) で失敗することがわかりました。Google を試しましたが、HTTP サーバー以外のサーバーからサーバー ステータス コードを返すスクリプトやコードは見つかりませんでした。

PHP を使用して、ニュースグループまたは FTP サーバーのステータスを確認するにはどうすればよいですか?

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

ほとんどの場合、私は言語にとらわれませんが、Web サイト全体は PHP 駆動型であるため、将来の保守性と拡張性を容易にするために PHP ソリューションが最適です。

4

3 に答える 3

4

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

FTP は非常に古い学校のサーバー主導です。匿名の FTP でさえ、ユーザー名とパスワードを提供するので、ちょっとしたハックです。「匿名」とあなたの電子メール アドレスとして定義されているだけです。

FTPサーバーが稼働しているかどうかを確認することは、確認することを意味します

  1. FTPサーバーに接続できること

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

  2. サーバーにログインできること:

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

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

于 2008-08-12T13:07:00.117 に答える
0

組み込みのPHPFTP*機能を使用する方が、独自の機能を使用するよりも簡単ではないでしょうか。URIが制御外のソースからのものである場合、使用する機能を決定するためにプロトコル定義(http://またはftp://など)を確認する必要がありますが、それはかなり簡単です。プロトコルが指定されている場合(実際に指定されているはずです!)、デフォルトでhttpに設定してみてください。

  • ここを参照してください
于 2008-08-12T12:19:34.300 に答える
0

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

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

次に、データを前後に fput/fread する必要があります。
これには、FTP プロトコルについて調べる必要があります。

于 2008-08-12T17:56:54.370 に答える