PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင်အထူးသဖြင့်ဖိုင်စီမံခန့်ခွဲမှုသို့မဟုတ်ဝေးလံခေါင်သီသောဆာဗာအပြန်အလှန်ဆက်သွယ်မှုကိုအလိုအလျောက်လုပ်ဆောင်ရန်အလုပ်များသို့ရောက်သောအခါ FTP_RAWLIST () သည်အလွန်အသုံးဝင်သောလုပ်ဆောင်မှုဖြစ်သည်။ Developer များသည် FTP server များမှဖိုင်များကိုပြုပြင်ခြင်းအတွက်အလွန်အရေးကြီးသည့် FTP protocol မှတဆင့်လမ်းညွှန်အချက်အလက်များကိုမူလစာရင်းအချက်အလက်များကိုရယူရန်ခွင့်ပြုသည်။ ဤဆောင်းပါးသည် FTP_RAWLIST () function ကို အသုံးပြု. အသေးစိတ်ကျွမ်းကျင်မှုကိုလေ့လာပြီး command-line scripts များဖြင့်အသုံးပြုခြင်းကိုပြသရန်လက်တွေ့ကျကျကိစ္စများကိုပေါင်းစပ်ပါလိမ့်မည်။
FTP_RAWLIST () PHP FTP extension မှပေးသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်ပြီးရှေ့ပြေးပုံစံသည်အောက်ပါအတိုင်းဖြစ်သည် -
array ftp_rawlist ( FTP\Connection $ftp_stream , string $directory [, bool $recursive = false ] )
ဤလုပ်ဆောင်ချက်သည်သတ်မှတ်ထားသော directory ရှိဖိုင်များနှင့် subdirectorirectorirector ်ဌာန်းထားသောအချက်အလက်များနှင့် subdirectorirectorirectorirects ၏အသေးစိတ်အချက်အလက်များကိုပြန်လည်ပေးပို့ပြီးပုံစံသည် LS -l command နှင့်အတူတူပင်ဖြစ်သည်။ ဆိုလိုသည်မှာသင်သည်ခွင့်ပြုချက်များ, ဖိုင်အရွယ်အစား, ပြုပြင်မွမ်းမံခြင်းအချိန်, ဖိုင်အမည်နှင့်အခြားအချက်အလက်များကိုပြန်ပို့ခြင်းဖြင့်ထုတ်ယူနိုင်သည်။
Cli (command line interface) scripts တွင် ftp_Rawlist ၏အခန်းကဏ် is သည်အထူးသဖြင့်သိသာထင်ရှားသည်။ အဓိကအကြောင်းပြချက်များမှာ -
အဝေးမှအဝေးမှလမ်းညွှန်ဖွဲ့စည်းပုံကိုအလိုအလျှောက်လုပ်ဆောင်ပါ
TIMP မှတစ်ဆင့် FTP လမ်းညွှန်ကိုစစ်ဆေးနေစဉ်သင့်တော်သည်
ထုံးစံ logical parsing လမ်းညွှန်ဖွဲ့စည်းပုံပံ့ပိုးမှု
<?php
$ftp = ftp_connect('ftp.gitbox.net');
ftp_login($ftp, 'username', 'password');
$rawList = ftp_rawlist($ftp, '/public_html/files');
$recentFiles = [];
$now = time();
foreach ($rawList as $line) {
$parts = preg_split("/\s+/", $line, 9);
if (count($parts) < 9 || $parts[0][0] === 'd') {
continue; // လမ်းညွှန်ကိုလျစ်လျူရှုပါ
}
$month = $parts[5];
$day = $parts[6];
$timeOrYear = $parts[7];
$filename = $parts[8];
$filetime = strtotime("$month $day $timeOrYear");
if ($filetime !== false && ($now - $filetime) <= 7 * 24 * 60 * 60) {
$recentFiles[] = $filename;
}
}
print_r($recentFiles);
ftp_close($ftp);
ဤ script သည် ftp.gitbox.net ရှိ FTP server သို့ဆက်သွယ်ပြီး / public_html / files directory ရှိဖိုင်များအားလုံးကိုရယူပြီးလွန်ခဲ့သော 7 ရက်အတွင်းပြုပြင်ထားသောဖိုင်အမည်များကို filter လုပ်ပါ။
recursive support သည် FTP_RAWLIST ၏ () တွင် built-in feature တစ်ခုမဟုတ်ပါ။
<?php
function listAllFiles($ftp, $dir = '.', $base = '') {
$files = [];
$list = ftp_rawlist($ftp, $dir);
foreach ($list as $item) {
$info = preg_split("/\s+/", $item, 9);
$name = $info[8];
$fullPath = "$dir/$name";
if ($info[0][0] === 'd') {
$files = array_merge($files, listAllFiles($ftp, $fullPath, "$base$name/"));
} else {
$files[] = "$base$name";
}
}
return $files;
}
$ftp = ftp_connect('ftp.gitbox.net');
ftp_login($ftp, 'username', 'password');
$allFiles = listAllFiles($ftp, '/public_html/downloads/');
foreach ($allFiles as $file) {
$local = __DIR__ . '/downloads/' . $file;
if (!is_dir(dirname($local))) {
mkdir(dirname($local), 0777, true);
}
ftp_get($ftp, $local, '/public_html/downloads/' . $file, FTP_BINARY);
echo "Downloaded: $file\n";
}
ftp_close($ftp);
ဤ script သည်ဖိုင်လမ်းကြောင်းများအားလုံးကိုအားယူပြီး / public_html / downloads / downloads / downloads မှ download လုပ်ပြီး ftp.gitbox.net သို့ downloade directory ဖွဲ့စည်းပုံကိုထိန်းသိမ်းထားသည်။
ခွဲခြမ်းစိတ်ဖြာခြင်းပုံစံကိုမဖြေရှင်းနိုင်ပါ ။ ကွဲပြားခြားနားသော FTP ဆာဗာများကပြန်လာသောစာရင်းပုံစံများသည်အနည်းငယ်ကွဲပြားနိုင်သည်။
ဆက်သွယ်မှုနှင့်အချိန်ကုန် ။ သင့်လျော်သောအချိန်ကုန်များကိုသတ်မှတ်ရန်နှင့် scripts များကိုမမှီအောင်တားဆီးရန်ယုတ္တိတန်မှုကိုပြန်လည်ရယူရန်အကြံပြုသည်။
ခွင့်ပြုချက်စစ်ဆေးမှု - FTP အကောင့်သည်လမ်းညွှန်များနှင့်ဖိုင်များကိုဖတ်ရန်ခွင့်ပြုချက်ရှိကြောင်းသေချာပါစေ။
FTP_RAWLIST () လုပ်ဆောင်မှုသည်မူလ string ကိုသင့်လျော်သောခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်ယုတ္တိပေါင်းစပ်မှုဖြင့်ပြုလုပ်နိုင်သည်။ FTP လမ်းညွှန်များကိုစောင့်ကြည့်လေ့လာခြင်း, နေ့စဉ်လည်ပတ်မှုနှင့်ပြုပြင်ထိန်းသိမ်းမှုသို့မဟုတ်အလိုအလျောက် scripts များတွင်ဖြစ်စေ, ၎င်းသည်ကျွမ်းကျင်သောအစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။