လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> FTP_RAWLIST ကို CLI scripts တွင်လျှောက်ထားရန်သိကောင်းစရာများ

FTP_RAWLIST ကို CLI scripts တွင်လျှောက်ထားရန်သိကောင်းစရာများ

gitbox 2025-05-26

PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင်အထူးသဖြင့်ဖိုင်စီမံခန့်ခွဲမှုသို့မဟုတ်ဝေးလံခေါင်သီသောဆာဗာအပြန်အလှန်ဆက်သွယ်မှုကိုအလိုအလျောက်လုပ်ဆောင်ရန်အလုပ်များသို့ရောက်သောအခါ FTP_RAWLIST () သည်အလွန်အသုံးဝင်သောလုပ်ဆောင်မှုဖြစ်သည်။ Developer များသည် FTP server များမှဖိုင်များကိုပြုပြင်ခြင်းအတွက်အလွန်အရေးကြီးသည့် FTP protocol မှတဆင့်လမ်းညွှန်အချက်အလက်များကိုမူလစာရင်းအချက်အလက်များကိုရယူရန်ခွင့်ပြုသည်။ ဤဆောင်းပါးသည် FTP_RAWLIST () function ကို အသုံးပြု. အသေးစိတ်ကျွမ်းကျင်မှုကိုလေ့လာပြီး command-line scripts များဖြင့်အသုံးပြုခြင်းကိုပြသရန်လက်တွေ့ကျကျကိစ္စများကိုပေါင်းစပ်ပါလိမ့်မည်။

1 ။ နိဒါန်း

FTP_RAWLIST () PHP FTP extension မှပေးသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်ပြီးရှေ့ပြေးပုံစံသည်အောက်ပါအတိုင်းဖြစ်သည် -

 array ftp_rawlist ( FTP\Connection $ftp_stream , string $directory [, bool $recursive = false ] )

ဤလုပ်ဆောင်ချက်သည်သတ်မှတ်ထားသော directory ရှိဖိုင်များနှင့် subdirectorirectorirector ်ဌာန်းထားသောအချက်အလက်များနှင့် subdirectorirectorirectorirects ၏အသေးစိတ်အချက်အလက်များကိုပြန်လည်ပေးပို့ပြီးပုံစံသည် LS -l command နှင့်အတူတူပင်ဖြစ်သည်။ ဆိုလိုသည်မှာသင်သည်ခွင့်ပြုချက်များ, ဖိုင်အရွယ်အစား, ပြုပြင်မွမ်းမံခြင်းအချိန်, ဖိုင်အမည်နှင့်အခြားအချက်အလက်များကိုပြန်ပို့ခြင်းဖြင့်ထုတ်ယူနိုင်သည်။

2 ။ command line scripts တွင်အသုံးပြုရန်သင့်လျော်သောအကြောင်းပြချက်

Cli (command line interface) scripts တွင် ftp_Rawlist ၏အခန်းကဏ် is သည်အထူးသဖြင့်သိသာထင်ရှားသည်။ အဓိကအကြောင်းပြချက်များမှာ -

  1. အဝေးမှအဝေးမှလမ်းညွှန်ဖွဲ့စည်းပုံကိုအလိုအလျှောက်လုပ်ဆောင်ပါ

  2. TIMP မှတစ်ဆင့် FTP လမ်းညွှန်ကိုစစ်ဆေးနေစဉ်သင့်တော်သည်

  3. ထုံးစံ logical parsing လမ်းညွှန်ဖွဲ့စည်းပုံပံ့ပိုးမှု

3 ။ လက်တွေ့ကျ 1 - ဖိုင်များကို directory တစ်ခုတွင်စာရင်းပြုစုပြီးနောက်ဆုံး 7 ရက်အတွင်းပြုပြင်ထားသောဖိုင်များကို filter လုပ်ပါ

 <?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 လုပ်ပါ။

4 ။ လက်တွေ့အမှု 2 - ဖိုင်များအားလုံးကိုစာရင်းဖွင့်ပြီး၎င်းတို့အားဒေသခံ area ရိယာသို့ကူးယူပါ

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 ဖွဲ့စည်းပုံကိုထိန်းသိမ်းထားသည်။

5 ။ debugging နှင့် coding များအတွက်ကြိုတင်ကာကွယ်မှုများ

  1. ခွဲခြမ်းစိတ်ဖြာခြင်းပုံစံကိုမဖြေရှင်းနိုင်ပါ ။ ကွဲပြားခြားနားသော FTP ဆာဗာများကပြန်လာသောစာရင်းပုံစံများသည်အနည်းငယ်ကွဲပြားနိုင်သည်။

  2. ဆက်သွယ်မှုနှင့်အချိန်ကုန် ။ သင့်လျော်သောအချိန်ကုန်များကိုသတ်မှတ်ရန်နှင့် scripts များကိုမမှီအောင်တားဆီးရန်ယုတ္တိတန်မှုကိုပြန်လည်ရယူရန်အကြံပြုသည်။

  3. ခွင့်ပြုချက်စစ်ဆေးမှု - FTP အကောင့်သည်လမ်းညွှန်များနှင့်ဖိုင်များကိုဖတ်ရန်ခွင့်ပြုချက်ရှိကြောင်းသေချာပါစေ။

6 ။ အကျဉ်းချုပ်

FTP_RAWLIST () လုပ်ဆောင်မှုသည်မူလ string ကိုသင့်လျော်သောခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်ယုတ္တိပေါင်းစပ်မှုဖြင့်ပြုလုပ်နိုင်သည်။ FTP လမ်းညွှန်များကိုစောင့်ကြည့်လေ့လာခြင်း, နေ့စဉ်လည်ပတ်မှုနှင့်ပြုပြင်ထိန်းသိမ်းမှုသို့မဟုတ်အလိုအလျောက် scripts များတွင်ဖြစ်စေ, ၎င်းသည်ကျွမ်းကျင်သောအစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။