Я создаю PHP-скрипт, который будет брать определенные каталоги с локального сервера и загружать их на удаленный сервер. Я использую phpseclib для работы над этим. Я пытаюсь придумать рекурсивную функцию, которая будет загружать файлы по одному. В настоящее время я использую такой массив:
[14842] => Array
(
[0] => adlcp_rootv1p2.xsd
[attachments] => Array
(
)
[1] => icon_online_training.png
[2] => icon_online_training_10_10.png
[3] => icon_online_training_5_5.png
[4] => ims_xml.xsd
[5] => imscp_rootv1p1p2.xsd
[6] => imsmanifest.xml
[7] => imsmd_rootv1p2p1.xsd
[8] => index_lms.html
[9] => index_lms_html5.html
[10] => ioslaunch.html
[lms] => Array
(
[0] => AICCComm.html
[1] => AICCFunctions.js
[2] => API.js
)
[11] => meta.xml
[mobile] => Array
(
[0] => 5WVFAZ5mwdE_80_DX492_DY492_CX170_CY246.png
[1] => 5WVFAZ5mwdE_80_DX492_DY492_CX170_CY246.swf
[2] => 5WWiJ1xMpse_80_DX800_DY800_CX400_CY193.png
[slides] => Array
(
[0] => 5VCMBOzQqNC.gz
[1] => 5VCMBOzQqNC.js
[2] => 5ZyGS2LfXQu.gz
[3] => 5ZyGS2LfXQu.js
)
[56] => spinner.png
[57] => storyline_compiled.js
)
[12] => story.html
[13] => story.swf
[story_content] => Array
(
[0] => 5WVFAZ5mwdE_80_DX492_DY492.swf
[1] => 5WWiJ1xMpse_80_DX800_DY800.swf
[2] => 5YBVUTyceKY_80_DX380_DY380.swf
[3] => 5eOmKqzCtjp_80_B-30_C-40_RB_P_0_0_830_888_DX610_DY610.swf
[4] => 5kmpqRdjAji_80_DX716_DY716.jpg
[5] => 5mWp2jb2eV7_80_DX330_DY330.swf
[6] => 5qT54mLzsgr_80_DX660_DY660.jpg
[slides] => Array
(
[0] => 5VCMBOzQqNC.swf
[1] => 5ZyGS2LfXQu.swf
[2] => 5cf9K2RD4e2.swf
[3] => 5kTbjeZczQg.swf
)
[33] => story.js
[34] => thumbnail.jpg
)
[14] => story_html5.html
[15] => story_unsupported.html
)
[6703] => Array
(
[0] => a day in the life of a rsa.docx
[attachments] => Array
(
)
[1] => icon_resources.png
[2] => icon_resources_10_10.png
[3] => icon_resources_5_5.png
)
Я буду перебирать первую часть массива для верхнего уровня каждого каталога. Оттуда я хотел бы использовать функцию, которая будет рекурсивно добавлять файлы на сервер удаления, где ключи, являющиеся массивами, являются именем каталога, а массив - содержимым этого каталога. Пара примеров из первого массива в списке будет примерно такой:
/local/public_html/14842/adlcp_rootv1p2.xsd => /remote/public_html/14842/adlcp_rootv1p2.xsd
or
/local/public_html/14842/mobile/slides/5VCMBOzQqNC.gz => /remote/public_html/14842/mobile/slides/5VCMBOzQqNC.gz
Для создания этого массива у меня в настоящее время есть функция, которую я могу изменить, чтобы она загружала файлы, а не создавала файл, но у меня были некоторые проблемы. Вот этот цикл и функция для этого:
foreach($cids as $c) {
$dirArray[$c] = dirToArray($dir . DIRECTORY_SEPARATOR . $c);
}
function dirToArray($dir)
{
$result = array();
$cdir = scandir($dir);
foreach ($cdir as $key => $value) {
if (!in_array($value, array(".", ".."))) {
if (is_dir($dir . DIRECTORY_SEPARATOR . $value)) {
$result[$value] = dirToArray($dir . DIRECTORY_SEPARATOR . $value);
} else {
$result[] = $value;
}
}
}
return $result;
}
Если мне нужна дополнительная информация для оказания помощи, пожалуйста, дайте мне знать.