8

大学での最終学年のプロジェクトは、MVC ベースの c# Web アプリケーションでした。

私の PHP は強くありません。PHP のプログラミング スキルを向上させたいと考えており、PHP mysql を使用して Web アプリケーションを構築しようとしています。

では、なぜ ASP.NET MVC について言及したのでしょうか??? 開発環境、プログラミングの OOP の性質、および「適切に」プログラミングする能力が非常に気に入ったからです。また、プログラミングの MVC メソッドも気に入りました。

私の質問は..比較的複雑な Web アプリケーションの場合、Cake PHP などのフレームワークを使用する必要がありますか?

私の特定の Web アプリケーションは、次のアクションを実行します: 見積もりエンジン、XML、RSS フィード、ユーザー アカウント、ショッピング バスケット、後で見積もりを保存、以前のトランザクションの確認、オンライン ストア管理など...

私が構築しようとしているサイトは、1 日あたり最大 4000 ヒットを受け取る可能性があり、wordpress プラグイン内に統合されます。

ハードコーディングだけでなく、フレームワークを使用する利点は何ですか? フレームワークを学ぶことは、新しいプログラミング言語を学ぶようなものではありませんか?

4

3 に答える 3

14

最近、私は Cake で作業していましたが、あまり感銘を受けていません。それはあなたの最良の選択肢ではありません。アドバイスどおり、Yii フレームワークを試すことができます。とてもよく書かれています。CakePHP については、私が最近書いたレビューが、あなたのすべての質問に詳細に答えているはずです。

迅速かつ迅速 - それは場合によります!

そして長い答え...

高速な Web 開発プロセスが必要な場合は、フレームワークを使用しても問題ありません。

高速な Web サイトが必要で、大量のデータベース呼び出しと複雑なリレーショナル データベース クエリによる大きな負荷が予想される場合、答えは NO です!!!

多くの人がさまざまなフレームワークに感銘を受けていますが、実際にはこれらのフレームワークのコードが何をしているのかさえ知りません...そして、私がキーボードをクリックしているだけではないことを証明するために、特定のフレームワークが好きではないからですフレームワークまたは私はフレームワークが嫌いなだけなので、CakePHP のパフォーマンスがそれほど悪くないことについていくつかの事実を説明します。:)

Web アプリをテストしてクラッシュさせるのが好きです。通常、これは私の一日になります...そして、それは私の仕事です! それが私がそれを愛する理由です!

私たちのケーキのオーブンに関するいくつかの情報

私の個人的な環境:

ローカル Web サーバー: クアッド コアの第 2 世代 i7-2730QM、16 GB 1333 MHz、7500 rpm hdd それほど重要ではありません...、デフォルトの Apache 2.2、PHP 5.3、MySQL 5、適切にインデックス化されたデータベース。

生産: 専用ブレード サーバー *スケーラブルなクラウド - トップ ティア プロバイダー。Nginx、PHP 5.3、MySQL 5、キャッシング サーバー

*未加工の PHP のみを使用する Web サイトは、ミリ秒またはナノ秒でロードされます。

参考までに、私の CakePHP Web サイトには 40 以上のモデルと非常に複雑な関係があります。インデックス付きの MySQL データベース テーブル。最新の Fiddler 2 をベンチマーク ツールとして Firefox で作業しています。

私は最近、エンタープライズ Web サイトの構築に CakePHP を使用していました。デフォルトのCakePHPインストールから生成された基本的なデフォルトのページから始めて、私のすべての環境で最近テストすることができました。私のローカル Web サーバーの負荷は本番環境で 3.9 秒、4.5 秒で、これは Cake のインストール後のデフォルトのページですか?!

結果は、ケーキを調整する前のものです (最初のケーキを焼く人が材料を適切に処理する方法を知っていると仮定し、アプリが高速に実行されると仮定します! 私はそれを疑っています.)!

マスターチューンアップ:

キャッシング: 現在の CakePHP 2.1 は、File、ApcCache、WinCache、XCacheEngine、MemcacheEngine、および RedisEngine をサポートしています。どちらを選択しても、おおよその速度増加は 100% から 180% です。(Cake のキャッシング オプションは使用せず、独自のキャッシング サーバーを実行します) 私たちの場合は 220% です! Debug を 0 に設定します。Cake エンジンを実行するには、2 つのキャッシュ フォルダーを生成する必要があります。1 つ目は /tmp/cache/persistent です。ここには、アプリを実行するときに Cake が使用する 2 つの異なるファイルがあります。

Cake の生成を遅くするのは、cake_core_file_map です。このファイルには、アプリ内のさまざまなクラスが格納されます。ファイルを構築するために、Cake は論理的で時間のかかるディレクトリ ツリーの検索を行い、適切なファイルを探します。

2 番目のキャッシュ フォルダーは /tmp/cache/models です。このフォルダーには、システムにテーブル スキーマが含まれるすべてのモデルのすべてのファイルが含まれます。

Debug が 0 の場合の違いは何ですか? Debug が 1 以上の場合、キャッシュの有効期間は 10 秒です。デバッグが 0 に設定されている場合、キャッシュの有効期間は 999 日です。ケーキを焼くおおよその速度増加は 80% から 100% です。Persistent Models - 「var $persistModel = true」をオンにすると、コントローラーに含まれるモデルごとに /tmp/cache/persistent に 2 つの新しいファイルが生成されます。1 つはオブジェクトのキャッシュで、もう 1 つは ClassRegistry 内のモデルのキャッシュです。このキャッシュは、ファイル システムにのみ保存できます。約。速度が 0% から 200% に増加します。アプリとモデルの数によって異なります。

その他のヒントとコツ: $uses の使用は避けてください。余分なループが発生し、ClassRegistry にヒットするためです。それはしばしば間違っています!Cookie はデフォルトで暗号化されており、cypher crypt メソッドは非常に低速です。機密データを保存しない場合は、暗号化をオフにします。0% から 15% のパフォーマンス向上。何があっても GZIP 圧縮を使用してください (出力を最大 90% 圧縮します)。フレームワークを使用している場合は、PHP 5+ でビルドされたバージョンを使用してください!!! CakePHP に関するドキュメントは、数年前に提供されたものよりもはるかに優れています。CakePHP を遅くする主な原因は、開発者による不適切なコードの使用です。しかし、Cake がどのように機能するかを本当に知らなければ、アプリを開発するのは簡単ではありません。

一部の関数が Cake で機能しないというコメントをたくさん読んでいます。CakePHP のすべての機能は、Cook Book に記載されているとおりに機能するので、注意深く読んでください。あまりよく説明されていない、または詳細に説明されていないものもありますが (そのため、初心者向けではありません)、質問しても問題ありません。特定の関数を適切な順序で使用しないと、アプリがクラッシュしたり、目的の結果が返されなかったりすることがあります。モデルと、さまざまなクラスと機能がどのように機能するかを念頭に置いてください。

時々このコードを書いた人々は、彼らが何について話しているのか分からないようです。たとえば、MySQL の並べ替え機能の代わりに Cake の配列並べ替え機能を使用して、データベースから配列を並べ替えます。真剣に?そして、これはケーキのドキュメントに書かれていました。

データベースについて言えば... Cake で ADODB を使用しているため、処理が少し遅くなります。ただし、ADODB の議論は別の記事で行います。速度が犠牲になるだけですが、クロスプラットフォームの互換性のために常に取り組んでいます!

Cake 全体が多くの配列で動作し、多くの複雑なモデルを生成して依存しています。私が見つけた他のいくつかの間違いは、コード内で他のものよりも遅い関数とメソッドを使用していることです。しかし、自分の間違いよりも他の人の間違いを見つける方が簡単であることを私はよく知っています!

時間開発について言えば、CakePHP を使用した重い開発プロセス中に直面する可能性のある、簡単ではないことがいくつかあり、回避策を見つけるのに多くの時間を費やすことになる可能性があります。

したがって、全体として、私が通常行う非常に複雑なプロジェクトがあり、Cake で複雑な仕事を行うために必要な機能を簡単に見つけたり構築したりできない場合、または壁に頭をぶつけて数日を無駄にしている場合は、ケーキを焼く価値はあります!Cake を調整した後、速度は他のアプリの速度に近づきました。しかし、負荷テストを数日行った後、Web アプリは持ちこたえているように見えますが、数千人の訪問者のプレッシャーにまだ屈服しています。ユニーク ビジター数が 7.5K を超えた後、すぐに過負荷になることが予想されます。

Cake は上級または中級の開発者向けだと思います。私が Web 開発のキャリアを始めたばかりだったら、Cake を使用しないでしょう。小規模から中規模のプロジェクトの場合、または管理評議会の構築に適しています (これは素晴らしいことです!)。アプリにフィードするためにサーバーに多額のお金を費やしたくない場合を除き、深刻なトラフィック負荷を伴う大規模なプロジェクトの場合、フレームワークは使用せず、生の PHP (Smarty の場合があります。これはパフォーマンスのために作られています) )!ハードウェアとソフトウェアの更新とアップグレードは常に行われており、アプリもそれに依存していることを忘れないでください。ソフトウェアのバージョン管理、ハードウェアのアップグレードなど、フレームワークに基づく非常に複雑な大規模アプリの移行またはデバッグを想像してみてください。リスク要因とアプリの実際のサポートについて考えてみてください。

大規模なプロジェクトの場合、Wordpress、Joomla、Drupal などのオープン ソース プラットフォームには近づきません。スケーラブルで適切に作成されたアプリを構築する最善の方法は、独自に構築することです。そうすれば、その背後にあるものがわかります!覚えて!- 圧縮、キャッシュ、可能な場合はデータベースに保存、最適化、Web デザインで使用する画像を減らし、複雑な URL の書き換えを回避します。そして再び最適化!サーバー アクセスとエラー ログを調べて、もう一度最適化してください。:) すべての最適化とスピードアップは、訪問者数が 4 桁以上に達したときに元に戻ります。

14 年以上の Web 開発経験の中で、自分の過ちから学び、いつ、どこでフレームワークが必要になるかを知っています。プロジェクトについて少し読んでプロジェクトを計画する時間は、間違いを犯して学習するよりも、多くの時間とお金を節約できます。時は金なり!

これが誰かの開発時間を改善するのに役立つことを願っています!

私はテストとベンチングを続け、後でここに更新を投稿します!

ソース: bit.ly/OX3UTo

于 2012-09-18T17:51:20.187 に答える
12

約 12 個の php フレームワークの経験があり、いくつかのフレームワーク (Cake を含む) に習熟していると自己評価した人として、 Yii Frameworkを調べることをお勧めします。軽量で、効率的で、よく書かれており、膨大な量の機能をサポートし、大きくてフレンドリーなコミュニティがあり、CakePHP の印象よりも優れています。

1 日あたりの 4000 ヒットに関する限り、それは基本的に何もありません。適切に最適化されたアプリケーションを作成すると (遅いクエリを処理し、それに応じてデータベースを最適化し、最終的に大量のトラフィック コンテンツを CDN に移動します)、まともなサーバーでは、Web アプリはその量の何倍もかかる可能性があります。

于 2012-09-18T11:28:13.037 に答える
0

まず、WordPress のような CMS ソフトウェア パッケージと CakePHP のような MVC フレームワークには違いがあります。WordPress は、それ自体が本格的なソフトウェアです。フレームワークとは、その上にコードを記述する必要がある一般的なアプリケーション構造 (つまり、着信要求を処理する方法、ディレクトリ構造、おそらくデータを処理するための ORM など) を提供するコードです。

フレームワークは完全に形成されていないため、優れています。それらは面倒で低レベルのタスクをすべて処理し、何かを実行するコードを記述できるようにします。欠点は、特定のフレームワークが提供するすべてのものを学習する必要があることです。

ソフトウェア パッケージは、箱から出してすぐに使用できるので便利です。通常、バニラ バージョンに必要なものがすべて含まれていない場合に機能を追加するためにインストールできる多数のプラグインがあります。欠点は、WordPress やその他の CMS のようなものを思い通りに動作させるのは難しいことが多く、プラグインを使用していても内部でコードを操作する必要があることです。

ニーズに合うものを見つけるのはあなた次第です。

とはいえ、エンタープライズ レベルのフレームワークを体験できるものを使用したい場合は、 Symfony2またはZend Frameworkを調べてください。 Yiiも堅実な提案です。

于 2012-09-18T11:37:11.880 に答える