2012-03-26 6 views
2

2フォルダ。再帰的にフォルダBに存在しない場合は、フォルダAからファイルを取り出します。フォルダBに存在しない場合は、フォルダAのファイルを使用します。

我々はフォルダ

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

フォルダB、ユーザが個々の変更を保存し

を有します。我々はフォルダBに、フォルダAからファイル/フォルダを取ることはないに存在します

fotos 
->pic1.png 
->style.css 

の代わりにフォルダ全体を対処:だからここのファイルは、1からすべての例を変える彼女/彼は唯一の2つのファイルを変更しました

これはどのように再帰的に行うことができますか、それに関連する用語はありますか?

私はRecursiveDirectoryIteratorを使用しますが、両方のディレクトリを配列にロードし、フォルダBに優先順位を付けてマージするよりも、インデックスが異なるため動作しません。 最後に、ressourcesに関するフォルダ全体をコピーするほうが良いかもしれません(スペースはメモリとしてあまり問題になりません)。

EDIT:

異なる目標が、いくつかのparallelities here。これまでに働くことはできませんでした。返事のおかげで助かりました。私はそれが有効な潜在的な解決策なら、mod_rewriteを好むでしょう...あまりにもリソースが強いPHP関数を使う前に。

EDIT 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 
... 

おかげでいくつかの光をsheding ...してください。

+2

をしたい場合、これがにずっと容易になるだろうscan_dirやその他の機能を使用することができ、フォルダB

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

のパスに行き、その後

をフォルダA上のファイルを取得mod_rewriteで処理します。 –

+0

この特定のケースでは、ファイル/フォルダ構造全体を知るためには、まずフォルダAを読み込む必要があります。それが比較され、フォルダBに優先権(もしあれば)を設定するよりも、これはmod_rewriteだけで行うことができますか?私はこれがhtaccessだけでどうやってできるのか考えていない。短いヒントで十分です、ありがとう。 – Email

+0

'RewriteCond ... -f' –

答えて

0

それぞれの画像要求がそれらを出力するPHPスクリプトを指している場合は、ファイルを出力しようとする前に単純なfile_exists文を使用できます。

本当に怠けている場合、インクルードパス(http://www.php.net/manual/en/ini.core.php#ini.include-path)に2つのフォルダを追加し、use_include_pathフラグをtrueに設定してfile_getの内容を使用して画像をロードすることができます。 1つのフォルダでファイルを開き、次にもう1つのフォルダでファイルを開こうとします。しかし、それが見つからない場合は、他のインクルードフォルダを調べ始めて、悪意のあるユーザーがこれを利用しようとするかもしれないので、注意してください。

-2

あなたが

+0

ファイルをコピーしているため、コードの重複が発生しています。それはあなたが望むものではありません。 – Arjan

+0

実際には私はちょうど質問に答える、それは私が欲しいものではない、彼がやろうとしていることだ。ファイルが存在しない場合は "HE"がファイルをコピーします。 – SuperNoob

+1

いいえ、ファイルがフォルダBに存在しない場合、フォルダAにあるバージョンを使用することを望みます。 – Arjan

関連する問題