1

私は複数の Web サイトを実行しており、サーバー上に CodeIgniter を 1 つインストールして (個別のアプリケーション ディレクトリと 1 つのシステム ディレクトリを使用しています)、すべて実行しています。これは素晴らしく機能しており、現時点で変更する理由はありません。

CI を拡張/オーバーライドするためのライブラリ クラスを常に作成していることに気付きます。また、バグを見つけたり、効率を改善したりする場合は、複数の Web サイトに戻って同じ調整を行う必要があります。 . このため、各ファイルを変更してから、そのサイトのバグをテストする必要があります。

中央の場所にある単一のライブラリ ディレクトリを使用し、すべての Web サイトをその中央ディレクトリにシンボリック リンクするという解決策を考えています。次に、ファイルを変更すると、すぐに下流のすべての Web サイトに反映されます。それぞれのエラーをテストする必要がありますが、変更を複数回行う必要はありません。1 つの Web サイトに固有のものはすべて、非共有ファイル (他の場所では使用されていないリンク ディレクトリにあります) になるか、ローカル ヘルパーに配置できます。

また、必要に応じて Web サイトを個別に移行できるように、CI バージョンごとに個別の「システム」ディレクトリを保持しています。この中央ライブラリ ファイルは、破損の可能性を減らすために特定のバージョンに添付されます。

このアプローチを採用することによる潜在的な問題や落とし穴を見ている人はいますか? 私が考慮すべき別の方向でこれを達成した人はいますか?

前もって感謝します!

4

4 に答える 4

3

これは実際に理にかなっていると思います:] がんばってください。公式の CodeIgniter ページでも、可能であると述べています。

また、問題が発生する理由が 1 つもわかりません。

編集: ここで複数のサイトの問題に触れています: http://codeigniter.com/user_guide/general/managing_apps.html

また:

http://codeigniter.com/wiki/Multiple_Applications/
http://www.exclusivetutorials.com/setting-multiple-websites-in-codeigniter-installation/
CodeIgniter で複数のプロジェクトを処理するには?
http://codeigniter.com/forums/viewthread/56436/

于 2010-02-11T21:24:57.813 に答える
2

CI アプリ用に 1 つのシステム ディレクトリと個別のアプリケーション ディレクトリがあります。アプリ間でライブラリといくつかのビュー テンプレートを共有するために、CI システムと同じフォルダー内に、通常のアプリ フォルダーと同じ構造でシンボリック リンクを使用する "Common" ディレクトリを作成しましたが、ローダーを変更できます。クラスを変更して、Common フォルダーにも表示されるようにします。私のセットアップは次のようになります。

/var/CodeIgniter/
/var/Common/
/var/Common/config/
/var/Common/controllers/
...
/var/Common/libraries/
...
/var/www/someapp/
/var/www/someotherapp/
...
于 2010-02-12T08:15:25.600 に答える
1

サイトの公開をどのように処理するかはわかりませんが(実際にそのいずれかを実行すると仮定して)、バージョン管理について調べます。たとえば、SVNでは、別のsvnディレクトリ(またはファイル)の外部を作成してから、外部ファイルを取得する現在のsvnディレクトリを更新することができます。このアプローチは、他のアプローチから1つの利点を得ることができます。つまり、共通ライブラリを変更しても、他のアプローチはすぐには影響を受けません。これにより、共通ライブラリを使用してすべてのサイトをテストする前に、不要な中断を防ぐことができます。その後、変更をテストする準備ができたら、各サイトのフォルダを更新できます。これは「より多くの作業」ですが、コードの重複や不要な中断を防ぎます。

于 2010-02-19T15:40:58.090 に答える
1

まさにそれを行うために MY_Loader を作成しました。

http://ellislab.com/forums/viewthread/136321/

于 2010-02-12T09:49:54.940 に答える