FTP_RAWLIST function ၏ function သည်သတ်မှတ်ထားသော directory ၏အသေးစိတ်ဖိုင်အချက်အလက်များကိုရယူရန်ဖြစ်သည်။ ၎င်းသည် LS -L command ကို Linux terminal တွင်လုပ်ဆောင်ခြင်းနှင့်ဆင်တူသည်။ ရရှိသောရလဒ်မှာ DESTRESS တစ်ခုစီသည်ခွင့်ပြုချက်များ, ပိုင်ရှင်များ, အရွယ်အစား, အချိန်စသည်ဖြင့်ဖိုင်မှတ်တမ်းများအပါအ 0 င်ဖိုင်အသေးစိတ်အချက်အလက်များဖြစ်သည်။
$ftp_conn = ftp_connect("gitbox.net");
ftp_login($ftp_conn, "username", "password");
$rawlist = ftp_rawlist($ftp_conn, "/path/to/directory");
ရရှိသော $ Rawlist Array သည်များသောအားဖြင့်ဤသို့ဖြစ်သည်။
-rw-r--r-- 1 user group 1234 May 10 12:30 file1.txt
drwxr-xr-x 2 user group 4096 Apr 22 10:00 folder1
-rw-r--r-- 1 user group 5678 May 11 14:15 file2.log
အချိန်အားဖြင့်မှာယူရန်အချိန်အားဖြင့်အချိန်အတိုမလ်အချက်အလက်များတွင်အချိန်အပိုင်းအခြားသည်အချိန်ခွဲခြမ်းစိတ်ဖြာရန်နှင့် timestamp သို့ပြောင်းလဲရန်လိုအပ်သည်။ FTP_RAWLIST မှပြန်လာသောအချိန်သည်ဆာဗာ၏ operating system ပေါ် မူတည်. ကွဲပြားနိုင်သည်ကိုသတိပြုပါ။ သို့သော်များသောအားဖြင့်၎င်းသည်အထက်ဖော်ပြပါပုံစံနှင့်ဆင်တူသည်။
ဤတွင် timestamps များကို parsestamps ကိုခွဲခြမ်းစိတ်ဖြာသောဥပမာတစ်ခုမှာ -
function parseFtpRawlistTime($line) {
// နေရာများအားဖြင့် split line strings,ကွဲပြားမှုအများဆုံး9ခဲှခြား,ဖိုင်အမည်များအတွက်နေရာများကိုတားဆီး
$parts = preg_split('/\s+/', $line, 9);
if (count($parts) < 9) {
return false; // ပုံစံမှားသည်,ခွဲခြမ်းစိတ်ဖြာနိုင်ခြင်း
}
// အချိန်အချက်အလက်များသည်များသောအားဖြင့်ဖြစ်သည်6、7、8မြင်းဇက်ကြိုး,ဥပမာအားဖြင့်:May 10 12:30 သို့မဟုတ် May 10 2024
$month = $parts[5];
$day = $parts[6];
$timeOrYear = $parts[7];
// လက်ရှိနှစ်ကိုရယူပါ,ပုံမှန်တစ်နှစ်အဖြစ်
$currentYear = date('Y');
// အချိန် format ကိုဆုံးဖြတ်ရန်နာရီဖြစ်ပါတယ်:တစ်မိနစ်သို့မဟုတ်တစ်နှစ်
if (strpos($timeOrYear, ':') !== false) {
// အချိန်ပုံစံ,လက်ရှိနှစ် splice ဖို့လိုအပ်ပါတယ်
$datetimeStr = "$month $day $currentYear $timeOrYear";
$timestamp = strtotime($datetimeStr);
// အချိန်လက်ရှိအချိန်ထက်ကျော်လွန်လျှင်(နှစ်သစ်ကူးအကြိုနေ့),ပြီးခဲ့သည့်နှစ်ကချိန်ညှိ
if ($timestamp > time()) {
$timestamp = strtotime("$month $day " . ($currentYear - 1) . " $timeOrYear");
}
} else {
// ဒါဟာနှစ်ပုံစံပါ,တိုက်ရိုက်ပြောင်းလဲခြင်း
$datetimeStr = "$month $day $timeOrYear";
$timestamp = strtotime($datetimeStr);
}
return $timestamp ?: false;
}
Timestamp နှင့်အတူဖိုင်တွဲတစ်ခုလုံးကို PHP ၏ USort function နှင့်ပေါင်းစပ်။ sort လုပ်နိုင်ပါတယ်။ ဥပမာများမှာအောက်ပါအတိုင်းဖြစ်သည် -
// ယူဆချက် $rawlist ဟုတ်ကဲ့ ftp_rawlist အဆိုပါပြန်လာခင်းကျင်း
usort($rawlist, function($a, $b) {
$timeA = parseFtpRawlistTime($a);
$timeB = parseFtpRawlistTime($b);
if ($timeA == $timeB) return 0;
return ($timeA < $timeB) ? -1 : 1;
});
ဤနည်းအားဖြင့် $ rawlist ကို အချိန်အတန်ကြာအမိန့်တွင်ခွဲထားသည်။ သင်ကဆင်းနိုင်ရန်အတွက် sort လုပ်လိုလျှင်နှိုင်းယှဉ်သင်္ကေတများကိုပြောင်းပြန်ဖြင့်ပြောင်းပါ။
ယခင် parsing အချိန်၏ယခင် function ကိုပေါင်းစပ်ခြင်း, အောက်ပါကအချိန်အားဖြင့် sorted ftp ဖိုင်များ၏အပြည့်အဝစာရင်း၏ဥပမာတစ်ခုဖြစ်သည်။
<?php
$ftp_server = "gitbox.net";
$ftp_user = "username";
$ftp_pass = "password";
$conn = ftp_connect($ftp_server);
if (!$conn) {
die("ချိတ်ဆက်. မရပါ FTP ဆာဆာ");
}
if (!ftp_login($conn, $ftp_user, $ftp_pass)) {
ftp_close($conn);
die("FTP လော့ဂ်အင်မအောင်မြင်ပါ");
}
$path = "/path/to/directory";
$rawlist = ftp_rawlist($conn, $path);
ftp_close($conn);
function parseFtpRawlistTime($line) {
$parts = preg_split('/\s+/', $line, 9);
if (count($parts) < 9) {
return false;
}
$month = $parts[5];
$day = $parts[6];
$timeOrYear = $parts[7];
$currentYear = date('Y');
if (strpos($timeOrYear, ':') !== false) {
$datetimeStr = "$month $day $currentYear $timeOrYear";
$timestamp = strtotime($datetimeStr);
if ($timestamp > time()) {
$timestamp = strtotime("$month $day " . ($currentYear - 1) . " $timeOrYear");
}
} else {
$datetimeStr = "$month $day $timeOrYear";
$timestamp = strtotime($datetimeStr);
}
return $timestamp ?: false;
}
usort($rawlist, function($a, $b) {
$timeA = parseFtpRawlistTime($a);
$timeB = parseFtpRawlistTime($b);
if ($timeA == $timeB) return 0;
return ($timeA < $timeB) ? -1 : 1;
});
// output sorted file list ကို
foreach ($rawlist as $line) {
echo $line . "\n";
}