လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> recursive directory ဖွဲ့စည်းပုံရရန် ftp_Rawlist နည်းလမ်း

recursive directory ဖွဲ့စည်းပုံရရန် ftp_Rawlist နည်းလမ်း

gitbox 2025-05-26

PHP ကိုအသုံးပြုပြီး FTP ကိုလည်ပတ်နေသည့်လုပ်ငန်းစဉ်တွင်ကျွန်ုပ်တို့သည်ဝေးလံခေါင်သီသောဆာဗာတွင်ရှိသော directory နှင့် subdirectries များနှင့်ဖိုင်များနှင့်ဖိုင်များနှင့်ဖိုင်များနှင့်ဖိုင်များအားလုံးရရှိရန်လိုအပ်သည့်အခြေအနေများနှင့်ကြုံတွေ့ရသည့်အခြေအနေများနှင့်မကြာခဏကြုံတွေ့ရလေ့ရှိသည်။ FTP_NLIST နှင့် FTP_RAWLIST ကဲ့သို့သောနည်းလမ်းများသည် PHP ၏ FTP တိုးချဲ့မှုတွင်ဖော်ပြထားသော်လည်း၎င်းတို့တွင်လက်ရှိလမ်းညွှန်၏ contents ၏ contents များကိုပုံမှန်အားဖြင့်သာစာရင်းပြုစုသည်။ အကယ်. ကျွန်ုပ်တို့သည်အပြည့်အ 0 directory struction ကိုရယူလိုပါကယုတ္တိဗေဒလုပ်ငန်းစဉ်ကိုကိုယ်တိုင်ကိုယ်ကျအကောင်အထည်ဖော်ရန်လိုအပ်သည်။ FTP တွင် Directory အဆောက်အအုံများကိုပြန်လည်ရယူရန် FTP_RAWLIST ကို မည်သို့အသုံးပြုရမည်ကိုအသေးစိတ်လေ့လာရန်ဤဆောင်းပါးသည်အပြည့်အဝဥပမာကိုအသုံးပြုမည်။

အခြေခံဗဟုသုတပြန်လည်သုံးသပ်ခြင်း - FTP_RAWLIST

FTP_RAWLIST သည် PHP တွင် ftp server တွင်သတ်မှတ်ထားသောလမ်းညွှန်စာရင်းကိုရရှိသည့် PHP တွင်လုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ၎င်း၏ပြန်လာရလဒ်သည် Unix ၏ LS -l command ၏ format output ကို output နှင့်ဆင်တူသည်။ ဥပမာအားဖြင့်:

 Array
(
    [0] => drwxr-xr-x   2 ftp      ftp          4096 Jan 01 12:00 folder
    [1] => -rw-r--r--   1 ftp      ftp          1234 Jan 01 12:01 file.txt
)

ကျွန်ုပ်တို့သည်ဖိုင်အမျိုးအစား (directory or file), အမည်, အရွယ်အစား, ပြုပြင်မွမ်းမံခြင်းအချိန်နှင့်အခြားအချက်အလက်များကိုဤအချက်အလက်မှခွဲထုတ်နိုင်သည်။

အကောင်အထည်ဖော်မှုစိတ်ကူးများ

Realuryory ဖွဲ့စည်းပုံကိုပြန်လည်ဝယ်ယူရန်ကျွန်ုပ်တို့လိုအပ်သည်။

  1. လက်ရှိ directory တွင် entries တွေကိုရယူရန် FTP_RAWLIST ကို သုံးပါ။

  2. ပစ္စည်းတစ်ခုစီ၏ပြန်လာသောအကြောင်းအရာများကိုခွဲခြမ်းစိတ်ဖြာပြီး၎င်းသည် directory တစ်ခုသို့မဟုတ်ဖိုင်တစ်ခုရှိမရှိခွဲခြားသိမြင်ပါ။

  3. ၎င်းသည်လမ်းညွှန်တစ်ခု (နှင့်မဟုတ် သို့မဟုတ် ... ) လျှင်, ထို့နောက် recuryory ကို recelliveny ကိုထည့်သွင်းပါ။

  4. လွယ်ကူသောလုပ်ဆောင်ချက်တစ်ခုသို့မဟုတ်ပြသရန်အတွက် directory string တစ်ခုထဲသို့ directory ဖွဲ့စည်းပုံကိုတည်ဆောက်ပါ။

နမူနာကုဒ်အပြည့်အစုံ

ဤတွင်၎င်းကိုမည်သို့အကောင်အထည်ဖော်ရမည်ကိုပြသသည့် PHP ဥပမာတစ်ခုမှာ -

 <?php

function getRecursiveFtpList($ftpConn, $path)
{
    $structure = [];
    $rawList = ftp_rawlist($ftpConn, $path);

    if ($rawList === false) {
        return $structure;
    }

    foreach ($rawList as $line) {
        $parts = preg_split("/\s+/", $line, 9);
        if (count($parts) < 9) continue;

        $name = $parts[8];
        $type = $parts[0][0];
        $fullPath = $path . '/' . $name;

        if ($type === 'd') {
            if ($name === '.' || $name === '..') continue;
            $structure[] = [
                'type' => 'directory',
                'name' => $name,
                'path' => $fullPath,
                'children' => getRecursiveFtpList($ftpConn, $fullPath),
            ];
        } elseif ($type === '-') {
            $structure[] = [
                'type' => 'file',
                'name' => $name,
                'path' => $fullPath,
                'size' => (int)$parts[4],
            ];
        }
    }

    return $structure;
}

// ဥပမာအသုံးပြုမှု:
$ftpHost = 'ftp.gitbox.net';
$ftpUser = 'your_username';
$ftpPass = 'your_password';

$conn = ftp_connect($ftpHost);
if (!$conn) {
    die("ချိတ်ဆက်. မရပါ FTP ဆာဆာ");
}

if (!ftp_login($conn, $ftpUser, $ftpPass)) {
    ftp_close($conn);
    die("FTP လော့ဂ်အင်မအောင်မြင်ပါ");
}

// မလုပ်မနေရမဟုတ်သော:passive mode ကိုသတ်မှတ်ပါ
ftp_pasv($conn, true);

$directoryTree = getRecursiveFtpList($conn, '/');

ftp_close($conn);

// ပုံနှိပ်ဖွဲ့စည်းပုံ(debugging သည်)
echo "<pre>";
print_r($directoryTree);
echo "</pre>";

output ဖွဲ့စည်းပုံဥပမာ

အထက်ပါကုဒ်ကိုဖွင့်ပြီးနောက်, သင်သည်ဆင်တူခြင်းနှင့်ဆင်တူလိမ့်မည် -

 Array
(
    [0] => Array
        (
            [type] => directory
            [name] => public_html
            [path] => /public_html
            [children] => Array
                (
                    [0] => Array
                        (
                            [type] => file
                            [name] => index.php
                            [path] => /public_html/index.php
                            [size] => 1234
                        )
                    ...
                )
        )
    [1] => Array
        (
            [type] => file
            [name] => readme.txt
            [path] => /readme.txt
            [size] => 456
        )
)

မှတ်သားရန်အရာ

  1. Coding ကိစ္စများ - FTP ဆာဗာများကပြန်လာသောလမ်းညွှန်သို့မဟုတ်ဖိုင်အမည်မှာ UTF-8 အက္ခရာများနှင့်မထိန်းချုပ်နိုင်ပါ။

  2. စွမ်းဆောင်ရည်ပြ issues နာများ - ပြန်လည်ပြုပြင်ခြင်းလုပ်ငန်းများသည်ကြီးမားသော directory ဆိုင်ရာအဆောက်အအုံများအောက်တွင်နှေးကွေးစေနိုင်သည်။

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

  4. Passive Mode : FTP 0 န်ဆောင်မှုအချို့သည် passive mode ကိုဖွင့်ရန်နှင့် FTP_PASV ($ con, true) ကိုသုံးရန်လိုအပ်သည်။ setting ။

အကျဉ်းချုပ်

FTP_RAWLIST နှင့် REQUIRARE ပြုပြင်ခြင်းမှတဆင့် PHP တွင် FTP server ရှိလမ်းညွှန်ဖွဲ့စည်းပုံကိုအပြည့်အဝရယူနိုင်ပါသည်။ ဤနည်းလမ်းသည်အလွန်အမင်းပြောင်းလွယ်ပြင်လွယ်ဖြစ်ပြီးအချက်အလက်များကို 0 ယ်လိုအားအပေါ်ဒေတာအဆောက်အအုံများကိုစိတ်ကြိုက်ပြုလုပ်နိုင်သည်။ ၎င်းသည်အလိုအလျောက်ဖြန့်ကျက်ခြင်း, backup ထပ်တူပြုခြင်း,

ဤဆောင်းပါး၏ပြီးပြည့်စုံသောဥပမာများကဤနည်းကိုကျွမ်းကျင်စွာပြုလုပ်ရန်နှင့်အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုနှင့်သက်ဆိုင်သည်။