ပထမ ဦး စွာ FTP_Connect နှင့် ftp_login မှတဆင့် FTP server သို့ဆက်သွယ်သည်။ ထို့နောက်ဝေးလံခေါင်သီသော directory ၏မူလဖိုင်စာရင်းကိုရယူရန် FTP_RAWLIST ကို သုံးပါ။
<?php
$ftp_server = "gitbox.net";
$ftp_user = "username";
$ftp_pass = "password";
// ဆက် FTP
$conn_id = ftp_connect($ftp_server);
if (!$conn_id) {
die("无法ဆက်到 FTP ဆာဆာ");
}
// လော့ဂ်အင်
if (!ftp_login($conn_id, $ftp_user, $ftp_pass)) {
ftp_close($conn_id);
die("FTP လော့ဂ်အင်失败");
}
// ပစ်မှတ်လမ်းညွှန်သို့ပြောင်းပါ
$remote_dir = "/files";
ftp_chdir($conn_id, $remote_dir);
// မူရင်းဖိုင်စာရင်းကိုရယူပါ
$raw_list = ftp_rawlist($conn_id, ".");
ftp_close($conn_id);
ဤအချက်မှာ $ Raw_List သည်ကြိုးတပ်ထားသော strings တစ်ခုဖြစ်ပြီး element တစ်ခုစီသည် Unix Ls -l နှင့်ဆင်တူသည့်အပြင်အဆင်တစ်ခုဖြစ်သည်။ ဥပမာအားဖြင့်:
-rw-r--r-- 1 user group 1024 Jan 01 12:00 file1.txt
drwxr-xr-x 2 user group 4096 Jan 01 12:01 folder1
နောက်စာရင်းကိုလုပ်ဆောင်ရန်နှင့်လိုင်းတစ်ခုစီကိုဖွဲ့စည်းထားသောအချက်အလက်များကိုတည်ဆောက်ရန်စီစဉ်ထားသောအချက်အလက်များကိုဖွဲ့စည်းရန် array_map ကို အသုံးပြုသည်။
$parsed_list = array_map(function($item) {
$chunks = preg_split("/\s+/", $item, 9);
return [
'permissions' => $chunks[0],
'number' => $chunks[1],
'owner' => $chunks[2],
'group' => $chunks[3],
'size' => $chunks[4],
'month' => $chunks[5],
'day' => $chunks[6],
'timeOrYear' => $chunks[7],
'name' => $chunks[8],
'type' => substr($chunks[0], 0, 1) === 'd' ? 'directory' : 'file'
];
}, $raw_list);
print_r($parsed_list);
ယခုသင်သည် FTP မှတည်ဆောက်ထားသည့်မူရင်းဖိုင်စာရင်းကိုစနစ်တကျခင်းကျင်းထဲသို့ထည့်သွင်းထားသည်။ Directories အစားဖိုင်များအစားဖိုင်များအတွက်ဖိုင်အမျိုးအစားများကို filter လုပ်ရန် array_filter ကို ထပ်မံအသုံးပြုနိုင်သည်။
$only_files = array_filter($parsed_list, function($item) {
return $item['type'] === 'file';
});
print_r($only_files);
ဖိုင်တစ်ခုစီအတွက် download link တစ်ခုထုတ်လုပ်ခြင်းကဲ့သို့သောအချက်အလက်များကို array_map နှင့်ထပ်တူပေါင်းစပ်ထည့်နိုင်သည်။
$download_links = array_map(function($item) {
return [
'name' => $item['name'],
'link' => "ftp://gitbox.net/files/" . urlencode($item['name'])
];
}, $only_files);
print_r($download_links);
ဤနည်းအားဖြင့် FTP_RAWLIST နှင့် Array_map နှင့်ပေါင်းစပ်ပြီး ftp ဖိုင်စာရင်းများကို filtering, strucking, batch link မျိုးဆက်နှင့်အခြားစစ်ဆင်ရေးများကိုအကောင်အထည်ဖော်ရန်အတွက်လုပ်ဆောင်နိုင်သည်။ ဤနည်းလမ်းသည်အကျိုးရှိရုံသာမကဘဲထိန်းသိမ်းထားနိုင်မှုနှင့်ပမာဏတို့လည်းရှိသည်။ ဤဖြေရှင်းချက်သည် FTP ဖိုင်များ၏စီမံခန့်ခွဲမှုလိုအပ်သည့် application scarios အတွက်အထူးအကြံပြုလိုပါသည်။
သက်ဆိုင်သောတက်(ဂ်)များ:
array_map