Last 5.3 release ever available: PHP 5.3.29 - 5.3 now EOL

ftp_nb_get

(PHP 4 >= 4.3.0, PHP 5)

ftp_nb_getFTP sunucusundan (engellenmeyen kipte) bir dosya indirir

Açıklama

int ftp_nb_get ( resource $ftp_akımı , string $yerel_dosya , string $uzak_dosya , int $kip [, int $devam_yeri = 0 ] )

ftp_nb_get() işlevi FTP sunucusundan uzak_dosya dosyasını alır, yerel dosya sistemine yerel_dosya adıyla kaydeder.

Bu işlevin ftp_get() işlevinden farkı bu işlevin dosyayı eşzamansız olarak indirmesidir. Yani indirme işlemi sırasında başka işlemler yapabilirsiniz.

Değiştirgeler

ftp_akımı

FTP bağlantısının bağlantı tanıtıcısı.

yerel_dosya

Yerel dosyanın yolu (dosya varsa üzerine yazılır).

uzak_dosya

Dosyanın FTP sunucusundaki yolu.

kip

Aktarım kipi. FTP_ASCII veya FTP_BINARY olabilir.

devam_yeri

Dönen Değerler

FTP_FAILED veya FTP_FINISHED ya da FTP_MOREDATA döner.

Örnekler

Örnek 1 - ftp_nb_get() örneği

<?php

// İndirmeyi başlatalım
$ret ftp_nb_get($my_connection"test""README"FTP_BINARY);
while (
$ret == FTP_MOREDATA) {

   
// Başka bir şeyler yapalım
   
echo ".";

   
// İndirmeye devam...
   
$ret ftp_nb_continue($my_connection);
}
if (
$ret != FTP_FINISHED) {
   echo 
"Dosya indirilirken bir hata oluştu...";
   exit(
1);
}
?>

Örnek 2 - ftp_nb_get() ile indirmeyi devam ettirmek

<?php

// İndirmeyi tekrar başlatalım
$ret ftp_nb_get($my_connection"test""README"FTP_BINARY,
                      
filesize("test"));
// VEYA: $ret = ftp_nb_get($my_connection, "test", "README",
//                           FTP_BINARY, FTP_AUTORESUME);
while ($ret == FTP_MOREDATA) {

   
// Başka şeyler yapalım
   
echo ".";

   
// İndirmeye devam...
   
$ret ftp_nb_continue($my_connection);
}
if (
$ret != FTP_FINISHED) {
   echo 
"Dosya indirilirken bir hata oluştu.....";
   exit(
1);
}
?>

Örnek 3 - ftp_nb_get() ile indirmeyi yeni bir dosyanın 100. baytından sürdürmek

<?php

// Özdevinimli konumlamayı kapatalım
ftp_set_option($my_connectionFTP_AUTOSEEKfalse);

// İndirmeyi başlatalım
$ret ftp_nb_get($my_connection"yenidosya""BENiOKU"FTP_BINARY100);
while (
$ret == FTP_MOREDATA) {

   
/* ... */

   // İndirmeye devam...
   
$ret ftp_nb_continue($my_connection);
}
?>

Yukarıdaki örnekte, yenidosya, FTP sunucusundaki BENiOKU dosyasından 100 bayt kısa olacaktır. Bunun sebebi indirmenin 100. bayttan başlatılmış olmasıdır. Eğer FTP_AUTOSEEK seçeneğine FALSE atamasaydık yenidosya dosyasının ilk 100 baytı '\0' karakterleriyle doldurulacaktı.

Ayrıca Bakınız

  • ftp_nb_fget() - FTP sunucusundan dosyayı (engellenmeyen kipte) indirip bir dosya tanıtıcısına yazar
  • ftp_nb_continue() - Dosya alımını/gönderimini (engellenmeyen kipte) kaldığı yerden devam ettirir
  • ftp_fget() - FTP sunucusundan dosyayı indirip bir dosya tanıtıcısına yazar
  • ftp_get() - FTP sunucusundan bir dosya indirir

add a note add a note

User Contributed Notes 1 note

up
0
passerbyxp at gmail dot com
2 years ago
Note that you may have to keep calling ftp_nb_continue in order to complete the download. For example, if you do this:

<?php
ftp_nb_get
($conn,$localfile,$remotefile,FTP_BINARY)
//do some LONG time work
while(ftp_nb_continue($conn)!=FTP_FINISHED){}
?>

Your local file may only contains a few kilobytes and the later ftp_nb_continue will keep raising warning of no more data (due to connection time out, I guess).

So you may want to do this instead:

<?php
$dl
=ftp_nb_get($conn,$localfile,$remotefile,FTP_BINARY)
//part of long time work
if(ftp_nb_continue($conn)==FTP_MOREDATA) {}
//part of long time work
if(ftp_nb_continue($conn)==FTP_MOREDATA) {}
//continue to do this until you finish the long time work
while(ftp_nb_continue($conn)==FTP_MOREDATA){}
?>

This happened on my Windows XP + PHP 5.3.8 under CLI. Hope this helps someone.
To Top