Hướng dẫn php get file from another server - php lấy tệp từ máy chủ khác

3

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi đang tìm cách thực hiện một số nhiệm vụ trong PHP

  1. Nhận một tệp từ một máy chủ khác
  2. Thay đổi tên tệp và extence
  3. Tải xuống tệp mới cho người dùng cuối

Tôi thích một phương thức hoạt động như một loại máy chủ proxy, nhưng tải xuống tệp sẽ ổn

Cảm ơn trước

Đã hỏi ngày 26 tháng 3 năm 2012 lúc 4:51Mar 26, 2012 at 4:51

Hướng dẫn php get file from another server - php lấy tệp từ máy chủ khác

Thử cái này

<?php
    $url  = 'http://www.example.com/a-large-file.zip';
    $path = '/path-to-file/a-large-file.zip';

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $data = curl_exec($ch);

    curl_close($ch);

    file_put_contents($path, $data);
?>

Sau khi bạn lưu đổi tên tệp với bất kỳ tên nào bạn cần

Tham khảo điều này

http://www.php.net/manual/en/ref.curl.php

Đã trả lời ngày 26 tháng 3 năm 2012 lúc 4:59Mar 26, 2012 at 4:59

Rinto Georgerinto GeorgeRinto George

33.7K13 Huy hiệu vàng51 Huy hiệu bạc69 Huy hiệu đồng13 gold badges51 silver badges69 bronze badges

Nếu bạn đã cho phép_url_fopen được đặt thành true:

 $url = 'http://example.com/image.php';
 $img = '/my/folder/flower.gif';
 file_put_contents($img, file_get_contents($url));

Khác sử dụng Curl:

 $ch = curl_init('http://example.com/image.php');
 $fp = fopen('/my/folder/flower.gif', 'wb');
 curl_setopt($ch, CURLOPT_FILE, $fp);
 curl_setopt($ch, CURLOPT_HEADER, 0);
 curl_exec($ch);
 curl_close($ch);
 fclose($fp);

Đã trả lời ngày 26 tháng 3 năm 2012 lúc 5:12Mar 26, 2012 at 5:12

PUSHPARAJPUSHPARAJPushparaj

5281 Huy hiệu vàng4 Huy hiệu bạc15 Huy hiệu đồng1 gold badge4 silver badges15 bronze badges

Tôi sử dụng một cái gì đó như thế này:

<?php
$url  = 'http://www.some_url.com/some_file.zip';
$path = '/path-to-your-file/your_filename.your_ext';

function get_some_file($url, $path){
    if(!file_exists ( $path )){
        $fp = fopen($path, 'w+');
        fwrite($fp, file_get_contents($url));
        fclose($fp);
    }
}
?>

Đã trả lời ngày 26 tháng 3 năm 2012 lúc 5:19Mar 26, 2012 at 5:19

Hướng dẫn php get file from another server - php lấy tệp từ máy chủ khác

1

Một chuyến thăm nhanh đến các tài liệu PHP sẽ cho bạn biết rằng nó cực kỳ dễ thực hiện :-)

Nhưng tóm lại, tất cả những gì bạn cần làm là:

$myfile = file_get_contents("http://server1/blah/blah/file.log");

Lưu ý: Mặc dù ... để hoạt động này, bạn sẽ cần tệp đó có thể truy cập được, thông qua máy chủ web đang chạy trên Server1, vì đó là tệp tĩnh, sau đó cài đặt một cái gì đó như nginx và chỉ đặt tài liệu vào gốc mặc định (hoặc Chỉ root mặc định tại thư mục gia đình) sẽ đủ để cho phép bạn sử dụng cuộc gọi nội dung tệp PHP GET.

Nếu, đặt một máy chủ web trên Server1 không phải là một tùy chọn, thì về cơ bản bạn sẽ phải làm theo các bước này.

  • Kết nối với Server1 bằng cách sử dụng một cái gì đó như SSH/Telnet hoặc một trong các cách sử dụng sao chép từ xa hoặc thiết lập máy chủ FTP và trỏ nó vào thư mục nhà của bạn.

  • Sử dụng một trong nhiều phương thức kết nối của PHP (mà phương pháp, phụ thuộc vào dịch vụ bạn đã phân chia ở trên)

  • Sau đó tạo một tập lệnh, kết nối bằng phương thức kết nối đã chọn trong bước 2, tự động hóa mọi tham số cần thiết và kết nối.

  • Sau khi kết nối, đưa ra bất kỳ lệnh nào cần thiết (tùy thuộc vào phương thức kết nối được sử dụng) để lấy tệp và nội dung đó.

  • Ngắt kết nối với máy chủ và xử lý tệp.

Với SSH, bạn sẽ cần sử dụng các hàm SSH2 được tích hợp trong PHP (một lần nữa, DOC nằm trên PHP.NET), có một lớp được ghi nhận ở đó bạn có thể sử dụng.

Đối với telnet, sự khác biệt tương tự, nhưng a) Tôi sẽ không đề xuất nó và b) bạn cần phải thực hiện nhiều mã để hỗ trợ giao thức Telnet qua các ổ cắm RAW.

Đối với FTP, cũng có PHP (và đã có trong một thời gian dài) đã hỗ trợ FTP, nhưng cũng như với một máy chủ web, bạn sẽ cần cài đặt và thiết lập FTP, sau đó bảo mật nó và tất cả những nhạc jazz đó, nếu bạn sẽ đi Làm điều này, sau đó dễ dàng hơn để làm cho nó hoạt động với một máy chủ web.

Ngoài ra, bạn cũng có thể áp dụng triết lý *nix của nhiều công cụ nhỏ và sử dụng các cuộc gọi EXEC và hệ thống để chạy các chương trình từ bản phân phối Linux của bạn, chẳng hạn như 'RCopy', 'SFTP' và nhiều người khác, nhưng một lần nữa đó là một nhiệm vụ khá Để biết những gì để tự động hóa, ở đâu và làm thế nào.

Bạn cũng có tùy chọn viết máy chủ ad-hoc của riêng bạn, lắng nghe trên ổ cắm và gửi nhật ký khi kết nối được thực hiện.

Cuối cùng, bạn cũng có thể chia sẻ một thư mục bằng NFS hoặc Samba, sau đó chỉ cần sử dụng các cuộc gọi mở/đọc/đóng tệp bình thường như thể tệp là cục bộ, nhưng sau đó bạn phải thiết lập người dùng, chia sẻ, auth và tải trọng những thứ khác.

Bạn đi theo con đường nào, phụ thuộc vào số lượng công việc của bạn sẵn sàng làm và những hạn chế nào bạn làm/không ngăn cản bạn sử dụng bất kỳ phương pháp nào được nêu ở đây.

Tuy nhiên, lời khuyên của tôi, hãy đi phương thức máy chủ web, sử dụng nginx, cấu hình tối thiểu, niêm phong máy chủ tệp nhật ký phía sau cửa đóng và để PHP làm những gì nó tốt và lấy tệp qua HTTP.