2008-08-12 71 views
5

Tôi có một tập lệnh kiểm tra phản hồi từ máy chủ HTTP bằng cách sử dụng các lớp HTTP PEAR. Tuy nhiên, gần đây tôi thấy rằng tập lệnh không thành công trên các máy chủ FTP (và có thể là bất kỳ thứ gì không phải là HTTP hoặc HTTPS). Tôi đã thử Google, nhưng không thấy bất kỳ tập lệnh hoặc mã nào trả lại mã trạng thái máy chủ từ các máy chủ khác với máy chủ HTTP.Kiểm tra mã trạng thái FTP bằng tập lệnh PHP

Làm cách nào để tìm trạng thái của nhóm tin hoặc máy chủ FTP bằng PHP?

EDIT: Tôi nên làm rõ rằng tôi chỉ quan tâm đến khả năng đọc từ máy chủ FTP và thư mục mà tôi chỉ định. Tôi cần phải biết nếu máy chủ đã chết/đã mất, tôi không được phép đọc, v.v.

Xin lưu ý rằng, mặc dù hầu hết thời gian tôi không biết ngôn ngữ, toàn bộ trang web đều do PHP điều khiển, vì vậy một giải pháp PHP sẽ là giải pháp tốt nhất để dễ bảo trì và khả năng mở rộng trong tương lai.

Trả lời

2

HTTP hoạt động hơi khác so với FTP mặc dù không may. Mặc dù cả hai có thể trông giống nhau trong trình duyệt của bạn, nhưng HTTP hoạt động ngoài cơ sở của URI (tức là truy cập tài nguyên A, bạn có một số nhận dạng cho bạn biết cách truy cập vào đó).

FTP là máy chủ trường học cũ được điều khiển. Ngay cả FTP ẩn danh là một chút của một hack, kể từ khi bạn vẫn cung cấp một tên người dùng và mật khẩu, nó chỉ được định nghĩa là "vô danh" và địa chỉ email của bạn.

Kiểm tra nếu một máy chủ FTP là lên phương tiện kiểm tra

  1. đó bạn có thể kết nối đến máy chủ FTP

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

  2. đó bạn có thể đăng nhập vào máy chủ:

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

  3. Sau đó, nếu có thêm các tài nguyên cơ bản mà bạn cần truy cập để kiểm tra xem một trang web cụ thể có đang hoạt động hay không, thì hãy sử dụng thao tác appropiate trên chúng. ví dụ. trên một tệp, có thể sử dụng ftp_mdtm() để nhận thời gian sửa đổi lần cuối hoặc trên một thư mục, xem liệu ftp_nlist() có hoạt động hay không.

+0

Cần lưu ý rằng, theo mặc định, các chức năng FTP này không được bật khi PHP được biên dịch, ít nhất là trên các hệ thống mà tôi đã sử dụng. –

0

Việc sử dụng chức năng PHP FTP * được xây dựng sẵn có đơn giản hơn việc cố gắng cuộn của riêng bạn có đơn giản không? Nếu URI đến từ một nguồn ngoài tầm kiểm soát của bạn, bạn sẽ cần phải kiểm tra định nghĩa chính xác (http: // hoặc ftp: //, vv) để xác định chức năng nào cần sử dụng, nhưng điều đó khá tầm thường. Nếu bây giờ đã được chỉ định tiêu chuẩn (có thực sự nên!) Thì bạn có thể thử mặc định là http.

0

Nếu bạn muốn đọc câu trả lời cụ thể, bạn sẽ phải mở ổ cắm và đọc/ghi dữ liệu theo cách thủ công.

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

Sau đó, bạn sẽ phải chuyển đổi/fread dữ liệu qua lại.
Điều này sẽ yêu cầu bạn đọc lên trên giao thức FTP.

Các vấn đề liên quan