9

私が手作業で作成したフレームワークを使用してPHP4で構築されたWebサイトがあります。コードは3年前のもので、私は制限されています(変更を加えるには多くの労力が必要です)。

このウェブサイトの新しいバージョンを作成することにしました。それ以来、私の知識は増え、多くのフレームワークが存在し、IOCが存在し、ORMも存在することがわかりました...問題は、すべての研究で、PHPで完全に満足できるものが見つからないことです。一方、私の仕事(主に.Net winform 2.0)では、多くの優れたIOCやその他のソリューションが可能であると考えており、.Netは、ベストプラクティスを備えたソフトウェアを開発するためにより成熟していると思います。

PHPに適したIOCはあまり見つかりませんでした。ORMに関しては、見栄えのするPropelを見たことがありますが、完全なフレームワークも見つかりませんでした(Symfonyのドキュメントは最新ではなく、多くのエラーが含まれています。Zendは大きすぎると思います...)、等

別のフレームワークを試して、WebサイトをPHPのままにしておくことをお勧めしますか、それとも.Netに切り替えることをお勧めしますか?

この質問の理由

  • システムは機能しますが、速度が低下し始めています(ユーザー数が多いため)。データベースが正規化されすぎています...など。
  • コードは悪くありません-ビジネスロジックはHTMLから分離されています-しかし問題は、コントローラーがビュー内にあるため、レイアウトを変更することがますます難しくなっていることです。
  • 単体テストは行われておらず、変更を加えることは非常に「ストレス」があります。
  • システムにログが記録されておらず、すべてが正常に機能しているかどうかを確認するためのスナップショットを取得するのは困難です。

詳細情報(2008年11月3日追加)

  • 私は.Net2.0を知っています。これが、私の代替手段がRoRではなく.Netである理由です。
  • 私は速度の問題ではなく、利用可能なツール/フレームワークのために他の言語を提案していました。
  • データベースの正規化のために遅くなります。理論的には優れているが実際にはそうではないテーブルが多すぎます(私たちは間違いから学びます!)
  • 趣味ですが、最初から25,000人以上のユーザーが登録しているので(全員がアクティブというわけではありません)、真剣に受け止めています。

ここの人々からの現在の提案

私は自分がしたことを維持し、ゆっくりとリファクタリングを行うように努めると思います。投票のほとんどが現在のシステムを維持することであったことに驚いていますが、まあ:Pこれは短期的には私にとってより簡単かもしれません。


スペルチェックをしているnickfへのThxは私のすべてのテキストをチェックします。

4

8 に答える 8

15

フレームワーク全体を自分で作成した場合は、PHP 5にアップグレードして、そこから先に進むことをお勧めします。ほとんどのPHP4コードは、PHP5で「正しく機能」します。例外は、新しい予約語を使用するコードと、PHP4がPHP5と異なる方法に依存するコードです。つまり、PHP4の機能のエッジにあるクラスと参照にいくつかの点があります。

于 2008-11-03T00:34:26.940 に答える
3

それが趣味のプロジェクトであり、プロジェクトの現在の状態に少し不満を感じている場合は、私が言うでしょう:間違いなく.netを試してください-同じ理由で、jspまたは他のほとんどすべての種類の実行可能な言語/プラットフォーム/ランタイムをお勧めします:楽しさと経験。しばらくしてからphpに戻すことにした場合でも、物事をどのように行うことができるかについての「新しい視点」を維持します。一方、古いコードとメソッドを手放すことは難しい場合があります。最初はすべてのバグ修正、小さな微調整、トリックが失われるため、完全な書き直しは困難です。そして通常、まったく同じ結果は得られません。しかし、とにかく(改善された)バージョン2.0を構築しようとしていて、自分自身を伸ばしたい場合は...先に進んで、何か新しいことを試してください。あなたが失敗したとしても、少なくともあなたはあなたのサイトでブログを書く何かを持っています:)

編集:2つの分離されたコードベースに「耐える」ことができる限り、コードの一部のみを移植したり、.netで新しい機能を開発したりすることも可能です。また、php用の.netコンパイラであるhttp://www.codeplex.com/Phalangerも調べてみてください。(まだ試していません。)

于 2008-11-03T01:35:11.060 に答える
2

追加情報に対応するために、PHP 4 から PHP 5 への移行は、おそらく、フレームワークを書き直して問題のいくつかに対処する絶好の機会です。

この機会を利用して、レイヤーの分離を増やすこともできます。たとえば、おそらく過度の正規化に関連して、いくつかの速度低下があると言います。フレームワークがデータ アクセスを十分に抽象化している場合は、そのレイヤーにキャッシング (memcached など) を追加できるはずであり、アプリケーションは何も知る必要はありません。

同じ作業を使用して、かなり簡単な方法でログを追加することもできます。オブジェクト レイヤーを使用すると、汎用データ ストレージにログを追加して、実質的に無料で大量のログを取得できます。

その他の速度低下は、不適切なデータベースのインデックス作成が原因である可能性があります。これはフレームワークとは無関係です。MySQL を使用している場合は、スロー クエリ ロギングをオンにして、それらのいくつかに対して EXPLAIN を実行します。インデックス作成が必要な列とそうでない列を確認する必要があります。

PHP 自体は遅い言語ではありません。遅さは別のところにあります。:-)

于 2008-11-03T05:20:57.503 に答える
1

ORMとしてLINQtoSQLまたはLINQtoEntitiesを使用するASP.NETMVCを強くお勧めします。

于 2008-11-03T02:05:48.393 に答える
1

コードの量によっては、PHPを使用することをお勧めします。.Netに移行することにした場合、基本的には完全に書き直されます。完全に異なるフレームワークを使用し、完全に異なる言語を使用し、完全に異なる開発パラダイムの下で使用するため、持ち込むことができるものはそれほど多くありません。

于 2008-11-03T01:09:39.053 に答える
1

優れた PHP ORM については、Doctrineを参照してください。インストールと書き込みが簡単で、ドキュメントが改善されているようです。クエリの書き方は LINQ を思い起こさせるかもしれません。

ABout Zend Frameworkは大きいですが、実際には関係ありません。すべてのコンポーネントは多かれ少なかれ独立しています。これは、Cake PHP や ROR のようなモノリシックなフレームワークというよりもライブラリです。

ZFの MVC ソリューションを使用せずにZend_Openidを使用できます。

すべてを書き直すことなく、現在のアプリケーションで Zend の使用を開始することもできます。

于 2008-11-03T13:56:08.350 に答える
0

セクションごとにゆっくりとPHP5に変更し、新しいフレームワークにゆっくりと対応しようとしますが、Webサイト全体を再構築することはしません(大きなWebサイトの場合)。

データベースの問題については、開発環境から始めて、データベースが遅いことがわかっている場所でデータベースを非正規化することができます。

于 2008-11-26T15:43:08.807 に答える
0

そして、なぜあなたはこれらの選択肢に自分自身を制限しているのですか?Ruby on Railsを試してみませんか?ORMが組み込まれています!

于 2008-11-03T02:08:00.247 に答える