PHPとパフォーマンス


17

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

企業の世界は、製品との統合やバックエンドサービスなどのために.NETまたはJ2EEを選択することを知っています。ただし、サイトやWebアプリケーションを構築するためのPHPがある場合、それを使用してどのように実行できますか大きなサイト?

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


1
Mediawiki(wikipediaのエンジン)はPHPで記述されており、パフォーマンスを向上させましたが、何も証明されていません。ニッチなケースかもしれません。
マイケルK

2
Alexaのトップ50のサイトを使用する@MichaeltheGhost(およびそれ以上の場合もあります)は、ボリュームが極端なレベルにあるため、ソリューションが高度にカスタマイズされ、トラフィックのレベルに合わせて微調整されており、実際には同じではないため、悪い例ですもう技術。
リャサル

1
FacebookもPHPを使用しています。また、これはパフォーマンスではなくスケーラビリティに関することを意味しますが、違いはわかっていますよね?もう1つの例はfreemobileです。これは、スケーラビリティの理由から、JavaからPHPでWebサイトを書き換えました。
deadalnix

「現在、Wikimedia FoundationのMediawikiのPHPコードのほとんどはHHVM JITコンパイラを使用していますが、一部のサービスは引き続きZend Engine PHPを使用しています。」en.wikipedia.org/wiki/Wikipedia:FAQ/Technicalこれは、FacebookがPHPを高速化するために作成したものです(PHPからC ++への翻訳者がコンパイルします)。動作します。PHPで記述されているからといって、速度が常に同じであるとは言えません。それは...あなたはその意味では、コードで何をするかに依存します
pqsk

回答:


19

パフォーマンスはおそらく要因の1つではありません。動的言語の場合、PHPは実際に非常によく機能します。タスクに応じて、他の技術を打ち負かすかもしれません。アプリケーションモデルは、JavaまたはASP.NETと直接比較するには単純に異なります。測定可能な速度差があっても、それは大きくなく、おそらく線形です。つまり、より多くのハードウェアを投げることで解決できることを意味します。また、プログラミング言語自体がボトルネックになることはめったにありません。アルゴリズム、データベースアクセス、ネットワーク帯域幅、およびI / Oが一般的な原因です。

ASP.NETまたはJava over PHPを使用する理由には、次のものがあります。

  • プラットフォーム統合。ASP.NETは、.NETおよび基盤となるWindows OSとの広範な統合を提供します。
  • 一般的な目的。PHPはWeb用に特別に設計されましたが、.NETとJavaは汎用プラットフォームです。Javaまたは.NETを使用すると、デスクトップとWebフロントエンドの両方を同じ共有コードに簡単に追加できますが、PHPはデスクトップアプリケーションの作成にはあまり適していません。
  • コード編成機能。Javaと.NETは最初からOOP向けに設計されていましたが、PHPのOOPはやや後付けです。PHPはごく最近ネームスペースを導入しましたが、.NETおよびJavaが提供しなければならないものと比較して、それらは限定的で扱いにくいものです。通常、エンタープライズスタイルのプログラミングはOOPに大きく依存しているため、PHPの候補はあまりありません。

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

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


2
ちょっとした言い分ですが、LAMP共有ホスティングと同じ価格でASP.NET共有ホスティングを入手できます。問題は、ほとんどの人が検索するときに最初に見つける場所であり、中小企業向けに販売されており、より高価です。
jfrankcarr

+1、これは非常によく言われ、要約されています。パフォーマンスの最も低いアプリケーションのボトルネックが言語にあることはめったにありません。
GrandmasterB

1
本当ですが、Javaがソリューションであるとは思わない-Oracleのような企業の多くの「エンタープライズ」アプリを使用するという不幸がありました。それらのほとんどすべてを、機能をほとんど削減することなく、パフォーマンスと使いやすさを大幅に向上させたPHP OSSアプリに置き換えることができます。
gbjbaanb

3
@gbjbaanb:問題がないため、Javaはこのコンテキストのソリューションではありません。そして、何かがオープンソースであるかどうかは、トピックとはまったく関係ありません。
-tdammers

@GrandmasterBはい、いいえ。たとえば、Javaには内部的に同期されたプリミティブがたくさんありますが、PHPにはありません。スケーラブルなJavaコードを作成するには、さらに規律が必要です。フリーモバイルはその効果の実世界の例です。しかし、スケーラビリティはフロントエンドだけに依存しているわけではないため(たとえば、データベースはここでは非常に重要です)、とにかく考える必要があります。
deadalnix

13

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

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

パフォーマンスに関しては、PHPは最適な選択肢ではありませんが、それほど悪くはありません。特に他の動的言語との比較。ただし、生のパフォーマンスは最も重要な要素ではありません。トラフィックの多いWebサイトの作成は、アーキテクチャレベルでのスケーラビリティの最適化に関するものです。


PHPが企業にそれほど軽spされているのはなぜですか?原因はほとんどありませんが、最初はひどいセキュリティ評判です。2つ目は、amateurい、管理不能なHTML-PHPスパゲッティコードを作成するアマチュアの言語として認識されていることです。成熟したMVCフレームワークが存在する場合でも、その認識は持続します。私は、PHPの元の作者に、フレームワークを必要としないことは役に立たないと主張していると思います。プログラミングスキルがほとんどまたはまったくないこれらの無知なアマチュアが自分自身を「PHPプログラマ」と呼んでいるという事実は、どちらも助けにはなりません。3番目の理由は、経験豊富なプログラマなら誰でも同意することです。PHPは言語としての設計が不十分だからです。ウェブマスターによって設計されたことがはっきりとわかります。

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


6

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

そのような結論に人々を駆り立てるかもしれないことは、Javaの場合(および.NETの場合も当てはまると思います)、アプリケーションのスケーリングはドキュメントや文献で頻繁に出てくる用語です。世の中にあるほとんどのアプリケーションサーバーは、人気の増加に伴い「馬力」を迅速に追加できるクラスタリングをサポートしています。PHPの場合、クラスターを自分で構築する必要があります。さまざまなコンポーネントを使用して、さまざまな方法でそれを行うことができます。PHPの内部動作について少し知っている必要があります。これはおそらく、PHPの単一サーバー(したがって中小規模のWebサイト)ではPHPの行き止まりだと思われます。


3

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

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


1

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

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

.NETは少なくともJavaとほぼ直接競合しようとするため、この点でほぼ同じ種類の機能を提供します。あなたは主張することができます(と両陣営の支持者が行う)日またはMicrosoftは、この点でより良い仕事をしているかどうかを超えるが、両方が人のチームが本当にしているという単純な事実しようとし、それに仕事には、この中で、彼らにPHPの上にかなり深刻な利点を提供します尊敬。


0

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

今はまだ彼に会っていませんが、FaceBookはPHPで書かれていることを教えてくれる人が常にいます。違う。元々、彼らが間違いに気づき、それをC ++に変換するHipHopを作成するまで、それは続いていました。

編集:どうやら最後のブロックは不明であるので、私が意味することはフェイスブックであることをIS PHPで書かれていますが、ヒップホップは落札RUN、全体の速度を向上させるために、C ++としてので、 PHPが遅いです。

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

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


Facebook / HipHopに関しては、あまり変わりません。彼らはまだPHPステートメントを書いていますよね?PHPからJavaへのコンパイラもあります。すべてのPHPコードをコンパイルすると、私のサイトは本当にJavaで書かれているということですか?
ヤチェクプルシア

Javaであるという意味ではなく、そのように実行されることを意味します。
ルイコットマン

わかりましたが、私のサイトはPHPで書かれていると主張できますか?はいの場合、誰もがFacebookがPHPで書かれていると主張することができます。言い換えれば、それはすべて「プログラミング言語」という用語の理解方法に要約されます。有効なステートメントの組み合わせだけですか、それともランタイム環境ですか。私は最初の意味を好むので、HipHopのことは私にとってあまり変わらないのです。だから私はあなたが言ったFaceBookの男だ:)
Jacek Prucia

わかりました、わかりやすくします。しかし、記録については、ほとんどの読者が私の主張を理解していると確信しています。
ルイコットマン

Facebookを元々PHPで作成したのは間違いではありませんでした。彼らが見たスケーラビリティに追いつかないことがわかったとき、彼らはHipHopを使用して問題を修正しました。これは、PHPの使用がすべてのWebサイトにとって非常に優れたオプションであることを意味すると思います。とはいえ、Slashdotはストレートperlを使用し、スケールの問題を解決しました。ウィキペディアはプレーンなPHPを使用し、スケールの問題もありません。
-gbjbaanb
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.