Используйте файлы в папке A, если их нет в папке B - PullRequest
2 голосов
/ 26 марта 2012

2 папки.Возьмите файлы из папки A, если их нет в папке B рекурсивно.

У нас есть Папка A

fotos
->pic1.png
->pic2.png
theme
->reset.css
->index.php
->folder
->...
index.php
style.css

и Папка B

, где пользователь сохраняет отдельные изменения.Таким образом, файлы здесь варьируются от 1 до всех, например, он / он изменил только 2 файла:

fotos
->pic1.png
->style.css

Вместо того, чтобы копировать всю папку, мы хотим взять файлы / папки из папки A, если ее нет в папкеB.

Как это можно сделать рекурсивно, и есть ли термин, относящийся к этому?

Я бы использовал RecursiveDirectoryIterator , но как: Загрузка обоихкаталоги в массивы, а затем объединение с приоритетом в папку B не работает, так как они имеют разные индексы.В конце концов, может быть, лучше просто скопировать всю папку с ресурсами (пространство - это не столько проблема, сколько память)?

РЕДАКТИРОВАТЬ:

Другая цельно некоторые параллели здесь .не удалось заставить его работать до сих пор, спасибо за помощь в ответе.Я бы предпочел mod_rewrite ... если это допустимое потенциальное решение ... прежде чем использовать слишком ресурсоемкие функции php.

РЕДАКТИРОВАТЬ 2:

Возможно ли это даже с mod_rewrite?Я хочу сделать это динамически, поскольку он должен применяться ко всем пользователям.Структура выглядит следующим образом или может быть изменена при необходимости:

FOLDER A: 
www/sources/folder A1
www/sources/folder A2
...

FOLDER B: (this are the user's individual Folders)
www/userfiles/folder A1/folder B1
www/userfiles/folder A1/folder B2
...
www/userfiles/folder A2/folder B1
www/userfiles/folder A2/folder B2
...

Спасибо всем, кто проливает свет ... пожалуйста.

Ответы [ 2 ]

0 голосов
/ 26 марта 2012

получите файл в папке A, затем

перейдите по пути к папке B

 if(!file_exists($file)){
   //set the path to get the files in the folder or merge the unique files
 }

, вы можете использовать scan_dir или любую другую функцию, если хотите

0 голосов
/ 26 марта 2012

Если у вас есть каждый запрос изображения, указывающий на выводящий их php-скрипт, вы можете использовать простой оператор file_exists перед попыткой вывести файл.

Если вы действительно ленивы, вы можете добавить две папки в путь включения (http://www.php.net/manual/en/ini.core.php#ini.include-path) и использовать содержимое file_get с флагом use_include_path, установленным в значение true, для загрузки изображений. Сначала он попытается открыть файл в одной папке, затем в другой. Будьте осторожны, потому что, если он не найдет его в них, он начнет просматривать другие включаемые папки, и некоторые недобросовестные пользователи могут попытаться воспользоваться этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...