PHP ကိုအသုံးပြုပြီး FTP ကိုလည်ပတ်နေသည့်လုပ်ငန်းစဉ်တွင်ကျွန်ုပ်တို့သည်ဝေးလံခေါင်သီသောဆာဗာတွင်ရှိသော directory နှင့် subdirectries များနှင့်ဖိုင်များနှင့်ဖိုင်များနှင့်ဖိုင်များနှင့်ဖိုင်များအားလုံးရရှိရန်လိုအပ်သည့်အခြေအနေများနှင့်ကြုံတွေ့ရသည့်အခြေအနေများနှင့်မကြာခဏကြုံတွေ့ရလေ့ရှိသည်။ FTP_NLIST နှင့် FTP_RAWLIST ကဲ့သို့သောနည်းလမ်းများသည် PHP ၏ FTP တိုးချဲ့မှုတွင်ဖော်ပြထားသော်လည်း၎င်းတို့တွင်လက်ရှိလမ်းညွှန်၏ contents ၏ contents များကိုပုံမှန်အားဖြင့်သာစာရင်းပြုစုသည်။ အကယ်. ကျွန်ုပ်တို့သည်အပြည့်အ 0 directory struction ကိုရယူလိုပါကယုတ္တိဗေဒလုပ်ငန်းစဉ်ကိုကိုယ်တိုင်ကိုယ်ကျအကောင်အထည်ဖော်ရန်လိုအပ်သည်။ FTP တွင် Directory အဆောက်အအုံများကိုပြန်လည်ရယူရန် 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 ဖွဲ့စည်းပုံကိုပြန်လည်ဝယ်ယူရန်ကျွန်ုပ်တို့လိုအပ်သည်။
လက်ရှိ directory တွင် entries တွေကိုရယူရန် FTP_RAWLIST ကို သုံးပါ။
ပစ္စည်းတစ်ခုစီ၏ပြန်လာသောအကြောင်းအရာများကိုခွဲခြမ်းစိတ်ဖြာပြီး၎င်းသည် directory တစ်ခုသို့မဟုတ်ဖိုင်တစ်ခုရှိမရှိခွဲခြားသိမြင်ပါ။
၎င်းသည်လမ်းညွှန်တစ်ခု (နှင့်မဟုတ် ။ သို့မဟုတ် ... ) လျှင်, ထို့နောက် recuryory ကို recelliveny ကိုထည့်သွင်းပါ။
လွယ်ကူသောလုပ်ဆောင်ချက်တစ်ခုသို့မဟုတ်ပြသရန်အတွက် 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>";
အထက်ပါကုဒ်ကိုဖွင့်ပြီးနောက်, သင်သည်ဆင်တူခြင်းနှင့်ဆင်တူလိမ့်မည် -
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
)
)
Coding ကိစ္စများ - FTP ဆာဗာများကပြန်လာသောလမ်းညွှန်သို့မဟုတ်ဖိုင်အမည်မှာ UTF-8 အက္ခရာများနှင့်မထိန်းချုပ်နိုင်ပါ။
စွမ်းဆောင်ရည်ပြ issues နာများ - ပြန်လည်ပြုပြင်ခြင်းလုပ်ငန်းများသည်ကြီးမားသော directory ဆိုင်ရာအဆောက်အအုံများအောက်တွင်နှေးကွေးစေနိုင်သည်။
ခွင့်ပြုချက်ကန့်သတ်ချက်များ - FTP အသုံးပြုသူများသည်ခွင့်ပြုချက်ကို recursive directorys သို့ဖတ်ရှုရန်သေချာစေပါ။
Passive Mode : FTP 0 န်ဆောင်မှုအချို့သည် passive mode ကိုဖွင့်ရန်နှင့် FTP_PASV ($ con, true) ကိုသုံးရန်လိုအပ်သည်။ setting ။
FTP_RAWLIST နှင့် REQUIRARE ပြုပြင်ခြင်းမှတဆင့် PHP တွင် FTP server ရှိလမ်းညွှန်ဖွဲ့စည်းပုံကိုအပြည့်အဝရယူနိုင်ပါသည်။ ဤနည်းလမ်းသည်အလွန်အမင်းပြောင်းလွယ်ပြင်လွယ်ဖြစ်ပြီးအချက်အလက်များကို 0 ယ်လိုအားအပေါ်ဒေတာအဆောက်အအုံများကိုစိတ်ကြိုက်ပြုလုပ်နိုင်သည်။ ၎င်းသည်အလိုအလျောက်ဖြန့်ကျက်ခြင်း, backup ထပ်တူပြုခြင်း,
ဤဆောင်းပါး၏ပြီးပြည့်စုံသောဥပမာများကဤနည်းကိုကျွမ်းကျင်စွာပြုလုပ်ရန်နှင့်အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုနှင့်သက်ဆိုင်သည်။