web-dev-qa-db-ja.com

PHPおよびパフォーマンス

PHPは中小規模のWebサイト用ですが、.NETおよびJavaはエンタープライズアプリケーション用です。私の質問はPHPについてです。なぜPHPエンタープライズWebアプリケーションに適したオプションではありません。Webアプリケーションが大きくなると、PHPはインタプリタ言語であるため遅くなるためですか?

企業の世界では、製品との統合やバックエンドサービスなどのために.NETまたはJ2EEを選択することを知っています。ただし、PHP大きなサイトでうまく機能させるにはどうすればよいですか?

要するに、PHPのパフォーマンスとWebサイトのサイズの間には関係がありますか?PHPを大きなサイトに適さないオプションにする理由は何ですか? ?

17
Naif

パフォーマンスはおそらく要因の1つではありません。動的言語の場合、PHPは実際にはかなりうまく機能します。タスクによっては、他のテクノロジーに勝る場合とそうでない場合があります。アプリケーションモデルは単純に異なり、JavaまたはASP.NETと直接比較することはできません。測定可能な速度差がある場合でも、それは大きくはなく、おそらく線形です。つまり、より多くのハードウェアを投入することで解決できます。また、プログラミング言語自体がボトルネックになることはめったにありません-本当にCPUを集中的に使用して作成しているのでない限り、アルゴリズム、データベースアクセス、ネットワーク帯域幅、およびI/Oは通常、通常の原因です。

ASP.NETまたはJavaをPHPよりも使用する可能性が高い理由は次のとおりです。

  • プラットフォーム統合。 ASP.NETは、.NETおよび基盤となるWindows OSとの広範な統合を提供します。
  • 汎用性。 PHPはWeb用に特別に設計されていますが、.NETとJavaは汎用プラットフォームです。 Javaまたは.NETを使用すると、少ない労力でデスクトップとWebの両方のフロントエンドを同じ共有コードに組み込むことができますが、PHPはデスクトップアプリケーションの作成にはあまり適していません。
  • コード編成機能。 Javaと.NETは最初からOOP用に設計されていますが、OOPのPHPは後付​​けです。 PHPはごく最近導入された名前空間であり、.NETおよびJavaが提供する必要があるものに比べて、制限があり、不格好です。エンタープライズスタイルのプログラミングは通常OOPに大きく依存しているため、PHPは候補としては劣ります。

知覚される効果のもう1つの理由は、PHPが無料で(ビールのように)ユビキタスであることです。すべての安価な共有Webホスティング会社の標準パッケージにはPHPがありますが、.NETまたはJavaサーバーは大幅にコストがかかります。その結果、膨大な量の小さなWebサイトでPHPが使用されています。これは、PHPが仕事に最適なツールではなく、手元にある唯一のツールだからです。

それはPHPが大規模なプロジェクトに適していないということではありません-それは単に 'エンタープライズ'種類のプログラミングにはうまくいかないだけです。その強みは他の場所にもあります。それらを活用できれば、他のWebテクノロジーと同じように簡単に大規模なアプリケーションを構築できます。

19
tdammers

ビジネスロジックの複雑さ(単純なWebサイトとエンタープライズソリューション)によって、トラフィック(「中小規模のWebサイト」は通常、トラフィックが中小規模のWebサイトを意味します)を混乱させています。 2番目のケースでは、パフォーマンスは重要な要素ではありません。

たとえば、Facebookはトラフィックの多いウェブサイトですが、エンタープライズアプリではありません。一方、Javaアプリケーションサーバーに基づくイントラネットは大量にあり、中規模のWebサイトのトラフィックも処理できません。

パフォーマンスの面ではPHPは最良のオプションではありませんが、それほど悪くはありません。特に他の動的言語との比較。ただし、ここでも生のパフォーマンスは最も重要な要素ではありません。トラフィックの多いWebサイトを作成することは、建築レベルでのスケーラビリティを最適化することに関するものです。


なぜPHPはそれほど企業から軽視されているのですか?原因はいくつかありますが、最初は 恐ろしいセキュリティレピュテーション でしょう。 2つ目は、アマチュアが扱いにくいHTML-PHPスパゲッティコードを作成するための言語として認識されていたことです。成熟したMVCフレームワークがあっても、その認識は持続します。私は PHPの元の作者がフレームワークを必要としないと主張している は役に立たないと思います。プログラミングスキルがほとんどまたはまったくない、これらの無知なアマチュアは、自分たちを「PHPプログラマ」と呼んでいるという事実も、助けにはなりません。 3番目の理由は、PHPが言語としてうまく設計されていないことに、経験豊富なプログラマが同意することです。現代の動的言語のほとんどは、コンパイラと言語設計を専門とする大学院生によって設計されたものですが、ウェブマスターによって設計されたことがはっきりとわかります。

そして、はい、企業では、システム統合がすべてであり、PHPも優れていません。十分な労力をかけて、Cモジュールを作成できます。 PHP-Javaブリッジがありますが、これは非常に面倒です。それを超えてあなたは多くを持っていません。 Boost :: PHP(C++との統合)を作成する試みは失敗しました。 JVMで実行されているPHPクローンは、PHPとの100%の互換性にはほど遠い(補足として、正式なPHP言語定義はありません。参照はデフォルトのみです)実装)。

13
vartec

なぜ人々がPHPは中小規模のウェブサイト用であると主張するのかわかりません。私の知る限りでは、これは真実ではありません。私はいくつかのPHP小さく始めてから、私の国ではトップ100のウェブサイトに成長しました。彼らはまだPHPを使用しており、それについて何も変更する予定はありません。

Java(そして.NETでもそうだと思います)の場合、アプリケーションの呼び出しは、ドキュメントや文献で頻繁に取り上げられる用語です。ほとんどのアプリケーションサーバー人気の成長とともに「馬力」の急速な追加を可能にする何らかの形式のクラスタリングをサポートしています。PHPの場合は、自分でクラスタを構築する必要があります。多くの方法で、 PHP内部の仕組みについて少し知っておく必要があります。これはおそらくPHP単一のサーバーで中規模のウェブサイト)は、PHPの行き止まりです。

6
Jacek Prucia

エンタープライズWebアプリケーションだけというものはありません。企業の世界では、通常、完全な企業システムがあり、Webパーツはシステム全体に比べてかなり小さいです。 Webの下には、バッチ処理、キューメッセージング、エンタープライズ統合、ゲートウェイなどを実行する多くのシステムがあります。上部のイベントだけではないかもしれません

PHPはWebに適していますが、他のタイプの分散システムにはあまり適していません。これらのシステムはすべてJavaまたは.NETで行うので、簡単ですPHPではなく同じプラットフォームでWebスタックを構築することもできます。

3
m3th0dman

PHPの問題は、セキュリティの脆弱性の履歴よりもパフォーマンスに起因するものではないと思います。間違いなく可能性あり特定のサイズまたは複雑さのWebサイトを作成することPHPでもセキュリティを維持しますが、複雑さが増すにつれて、セキュリティの維持はより困難になる傾向があります。

一方、Javaは、最初からセキュリティに関する少なくともいくつかのアイデアに基づいて設計されています。それらは現在のほとんどの展開に完全には適合しませんが(元々の考えは主にアプレットではなくアプレットに関するものでした)、強調点はその機能が安全なコードの生成によりよく適合する傾向があることを意味します。そしてもちろん、それもまだ立ち止まっていません-アプレットはほとんど死んでいる問題なので、Javaが再定義され、サーバーサイドの役割を強調します(ほとんど))占有します。

.NETは少なくともJavaとほぼ直接競合しようとするため、この点でほぼ同じ種類の機能を提供します。この点に関して、SunとMicrosoftのどちらがより良い仕事をしているのかについて議論することができます(両方の支持者はそうします)が、両方に本当に人々のチームがあるという単純な事実試行この点で、PHPよりもかなり深刻な利点があります。

1
Jerry Coffin

1)パフォーマンス:ここでのいくつかの回答は、その点について誤解を招いています。
Phalangerプロジェクト (これまではうまく使用していた)を使用すると、PHP内でC#コードを使用したり、その逆を行ったり、1つから完全に切り替えることができます。他の言語。あなたはおそらくいくつかの変更を加える必要がありますが、彼らがそれに取り組んでいるので、それはどんどん良くなっています。
私のポイントは、C#を支持する2.5倍の平均速度があることを彼らが発見したことです(または.NETは一般的に、VBも同じことを行い、最終的にはMSILになります)。 。
Wordpressでのテストを確認してください。多くの開発者が集まりました。

今はまだ彼に会っていませんが、FaceBookがPHPで書かれていることを伝える人が常にいます。違う。もともとは、彼らが間違いを認識し、HipHopを記述してC++に変換するまでのことでした。

編集:どうやらその最後のブロックは不明確なので、私が意味したのはFaceBook[〜#〜]です[〜#〜 ]はPHPで記述されていますが、HipHopは[〜#〜] run [〜#〜]をC++として実行して、全体的な速度を向上させます[〜#〜]ため[〜#〜]PHPが遅いため.

2)セキュリティ:すでに述べたように、PHPにはセキュリティ問題の長い歴史があります。

3)開発者の時間:PHPでWebサイトを作成することは、特にフレームワークと利用可能なすべての「サイトビルダー」を使用すると、より簡単になる傾向があります。信頼性の高い安全なPHP Webサイトを作成することは別の話です。

0
Louis Kottmann