FTP_RAWLIST သည် strings array တစ်ခုသို့ပြန်ပို့သည်။ string တစ်ခုစီသည် Linux System တွင် LS -l command ၏ output နှင့်ဆင်တူသည်။
-rw-r--r-- 1 user group 1234 May 10 10:00 file1.txt
drwxr-xr-x 2 user group 4096 May 09 09:00 folder1
လိုင်းတစ်ခုစီတွင်ပါရှိသောအချက်အလက်များမှာ -
ဖိုင်ခွင့်ပြုချက် (ဥပမာ - - R - R - R--- )
hard link ကိုရေတွက်
ဖိုင်ပိုင်သောအသုံးပြုသူ
ဖိုင်တွဲဖက်ပိုင်
ဖိုင်အရွယ်အစား (byte နံပါတ်)
ပြုပြင်ထားသောနေ့စွဲ (တစ်လ, နေ့, အချိန်, အချိန်,
ဖိုင်နာမည်
ခွဲခြမ်းစိတ်ဖြာခြင်းလုပ်ငန်းစဉ်၏အဓိကအချက်မှာကြိုးမျဉ်းတစ်ခုစီကိုနယ်ပယ်အမျိုးမျိုးသို့ဖြိုခွဲခြင်းနှင့်၎င်းကိုသော့ချက်တန်ဖိုးအတွဲများအဖြစ်စုစည်းရန်ဖြစ်သည်။ နမူနာကုဒ်သည်အောက်ပါအတိုင်းဖြစ်သည် -
<?php
function parseRawList(array $rawList): array {
$files = [];
foreach ($rawList as $line) {
$chunks = preg_split('/\s+/', $line, 9);
if (count($chunks) < 9) {
continue; // ပုံစံ၏ချွင်းချက်,ခုန်ကျော်သည်
}
list($permissions, $links, $owner, $group, $size, $month, $day, $timeOrYear, $name) = $chunks;
// အရtimeOrYearတရားသူကြီးနှစ်သို့မဟုတ်အချိန်
if (strpos($timeOrYear, ':') !== false) {
// အချိန်အပါအဝငျ,ယခုနှစ်လက်ရှိနှစ်ကြာသည်
$year = date('Y');
$time = $timeOrYear;
} else {
$year = $timeOrYear;
$time = '00:00';
}
// ပြည့်စုံပြုပြင်သည့်အချိန် splicing,Timestamp သို့ကူးပြောင်း
$dateStr = "$month $day $year $time";
$timestamp = strtotime($dateStr);
$files[] = [
'name' => $name,
'permissions' => $permissions,
'links' => (int)$links,
'owner' => $owner,
'group' => $group,
'size' => (int)$size,
'modified' => date('Y-m-d H:i:s', $timestamp),
'is_dir' => $permissions[0] === 'd',
];
}
return $files;
}
?>
ပြည့်စုံသောဥပမာက FTP server တစ်ခုနှင့်မည်သို့ချိတ်ဆက်ရမည်ကိုပြသပြီး FTP_RAWLISS ကို မည်သို့ခေါ်ဆိုရမည်,
<?php
$ftpServer = 'gitbox.net';
$ftpUser = 'username';
$ftpPass = 'password';
// တည်ထောင်FTPဆက်
$connId = ftp_connect($ftpServer);
if (!$connId) {
die("无法ဆက်到FTPဆာဆာ $ftpServer");
}
// လော့ဂ်အင်
if (!ftp_login($connId, $ftpUser, $ftpPass)) {
ftp_close($connId);
die("FTPလော့ဂ်အင်失败");
}
// မူရင်းဖိုင်စာရင်းကိုရယူပါ
$rawList = ftp_rawlist($connId, '.');
if ($rawList === false) {
ftp_close($connId);
die("ရယူFTPစာရင်းမအောင်မြင်ပါ");
}
// ခွဲခြမ်းစိတ်ဖြာစာရင်း
$filesArray = parseRawList($rawList);
// ထုတ်လုပ်ခြင်းJSONပမာဏ
header('Content-Type: application/json');
echo json_encode($filesArray, JSON_PRETTY_PRINT);
// 关闭ဆက်
ftp_close($connId);
// အဆိုပါ parsing function ကိုအထက်ကဲ့သို့တူညီသောဖြစ်ပါတယ်,နဲနဲ
?>
အထက်ဖော်ပြပါနည်းလမ်းများမှတစ်ဆင့် FTP_RAWLIST ၏စာရင်းကို ftp_Rawlist ၏ရလဒ်ကိုစနစ်တကျခင်းကျင်းထားသည့်နေရာတစ်ခုအဖြစ်သို့ပြောင်းလဲပြီးနောက်ဆုံးတွင် JSON format data များကိုထုတ်လုပ်သည်။ ၎င်းသည် PHP အစီအစဉ်အတွင်းရှိ FTP ဖိုင်စာရင်း၏လည်ပတ်မှုကိုလွယ်ကူချောမွေ့စေရုံသာမက API မှတစ်ဆင့်ရှေ့တန်းသို့မဟုတ်အခြားစနစ်များသို့ဒေတာထုတ်လွှင့်မှုကိုအထောက်အကူပြုသည်။
ဤနည်းလမ်းသည်အထူးသဖြင့်ဆောက်လုပ်ရေးစီမံခန့်ခွဲမှု backend သို့မဟုတ် ftp file lists များအပေါ် အခြေခံ. ဖိုင်ရှာဖွေခြင်းလုပ်ငန်းများအတွက်,