PHP ftp_nb_fget()

Hàm PHP ftp_nb_fget()

Hàm ftp_nb_fget() trong PHP là một phần của bộ thư viện FTP, cho phép bạn tải tệp từ máy chủ FTP đến máy tính của bạn một cách không đồng bộ. Điều này có nghĩa là bạn có thể tiếp tục thực hiện các tác vụ khác trong khi tệp đang được tải xuống.

Cú pháp

ftp_nb_fget($ftp_stream, $handle, $remote_file, $mode, $resumepos);

Tham số

  • $ftp_stream: Kết nối FTP được tạo ra bởi hàm ftp_connect() hoặc ftp_login().
  • $handle: Tệp điểm đến mà bạn muốn lưu tệp tải xuống. Bạn có thể tạo tệp này bằng cách sử dụng hàm fopen().
  • $remote_file: Tên tệp trên máy chủ FTP mà bạn muốn tải xuống.
  • $mode: Chế độ tải xuống. Bạn có thể sử dụng FTP_ASCII cho tệp văn bản và FTP_BINARY cho tệp nhị phân.
  • $resumepos: Vị trí byte mà bạn muốn bắt đầu tải xuống tệp. Nếu bạn muốn tải xuống tệp từ đầu, bạn có thể đặt giá trị này là 0.

Giá trị trả về

Hàm ftp_nb_fget() trả về một trong những giá trị sau:

  • FTP_MOREDATA: Tệp vẫn đang tải xuống. Bạn cần gọi hàm ftp_nb_continue() để tiếp tục tải.
  • FTP_FINISHED: Tải xuống hoàn tất.
  • FALSE: Có lỗi xảy ra trong quá trình tải xuống.

Ví dụ

$ftp_server = "ftp.example.com";
$ftp_user_name = "username";
$ftp_user_pass = "password";

// Tạo kết nối
$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");

// Đăng nhập
if (@ftp_login($conn_id, $ftp_user_name, $ftp_user_pass)) {
    // Mở tệp để ghi
    $handle = fopen('local_file.txt', 'w');

    // Bắt đầu tải xuống
    $result = ftp_nb_fget($conn_id, $handle, 'remote_file.txt', FTP_BINARY);

    // Tiếp tục tải nếu cần
    while ($result == FTP_MOREDATA) {
        $result = ftp_nb_continue($conn_id);
    }

    // Đóng tệp
    fclose($handle);
} else {
    echo "Couldn't connect as $ftp_user_name";
}

// Đóng kết nối
ftp_close($conn_id);

Lưu ý

Khi sử dụng ftp_nb_fget(), hãy đảm bảo rằng bạn đã bật chế độ không đồng bộ trong ứng dụng của mình để xử lý tải xuống trong khi vẫn có thể thực hiện các tác vụ khác.

Hàm này rất hữu ích cho các ứng dụng yêu cầu tải xuống tệp lớn hoặc nhiều tệp mà không làm gián đoạn trải nghiệm người dùng.