確かに、「テスト済み、認定済み」のビットは、一部の環境では優れています。私たちの場合、監査要件は、認定されたソフトウェアスタックを使用するか、独自に使用するが、それにフィードするすべての小さなコンポーネントに対して迅速な更新を行っていることを示す必要があることです。そのため、健全性を確保するために、これまでLinuxディストリビューションの標準製品を使用してきました。これに伴う問題は、彼らがカーブから何年も遅れる傾向があるということです。たとえば、ほとんどのディストリビューションは、5.1(!)に固執した後、最近PHP5.3を採用しました。これは、最新のコーディング手法を使用する最新のアプリケーションを開発しようとしている場合には受け入れられません。さらに、PHPのパフォーマンスと信頼性の点で1トンも諦めています。
そうは言っても、機能もかなりいいです。@Kevenはすでにジョブキューについて言及しています。非同期で実行されるあらゆる種類のタスクを非常に簡単にオフロードし、メインのリクエストプロセスを実行し続けることができるという点で、これは私たちにとって素晴らしいことです。例として、特定のタイプのイベントが発生するたびに、アプリケーションの1つがバグトラッカーにタスクを作成します。これはWebサービスによって実行され、バグトラッカーは非常に遅いため、これには数秒かかる場合があります。ただし、アプリケーションのユーザーを待たせるのではなく、ジョブをキューに入れてバックグラウンドで実行するだけです。同様に、標準の電子メールクラスは、コードがSMTPサーバーと通信している間、ユーザーを待機させるのではなく、ジョブキューを使用します。そして、それは、大きなレポートの生成、データベースの整合性チェックの実行、キャッシュの再構築などの有用性にさえ触れていません。
ページキャッシュは、ページ全体をキャッシュしてそれで済ませることができる場合に最適です。PHP独自のキャッシングコントロールよりも優れたコントロールがあるため、これをWSDLで使用します。同様に、ダウンロードサーバーは、画像などの特定の種類のコンテンツをキャッシュするのに最適です。また、ローカルmemcachedサーバーのようにデータキャッシュを使用して、低速ネットワーク上の別の場所にある低速データベースサーバーへのクエリを回避することで、あらゆる種類のリクエストを大幅に高速化します。
そしてもちろん、@Andréが言及しているように、そこには非常に優れたデバッグ、トレース、およびイベントレポート機能がいくつかあります。
展開とロールバックを実行するための優れた機能もいくつかあります。これらは、ビジネスクリティカルなアプリケーションで非常に重要です。いつか試してみるつもりですが、今のところ、ZSを使う前にまとめたツールを使っています。
これで、他のさまざまなツールを組み合わせることで、これらの機能のほとんど(特に、すべてのキャッシュビット)を取得できます。ただし、それらすべてを調査して学習し、すべてをインストールして連携させてから、何かが更新されたときに適切な統合テストを行うなど、すべてを維持する必要があります。それは多くの作業と時間です-私が個人的にコードを書くのに費やしたい時間です。
そうは言っても、欠点があります。一つには、物事は時々感じます...中途半端なおよび/または誤解されています。たとえば、存在しないアイテムをフェッチしようとすると、データキャッシュAPIはブール値のfalseを返します。また、フェッチせずにアイテムが存在するかどうかをチェックする機能はありません。これが何を意味するかを推測します。ブール値を安全に取得できないため、安全に格納することはできません。文書化が不十分なAPC互換性レイヤーが含まれていますが、APCから存在関数を使用しようとすると、未定義関数エラーが発生します。
別の例として、開発ステーションにMacを使用していますが、PHPサーバーソフトウェアに数千を投じるすべてのプロの開発者によって実行される傾向がある古代のハードウェアとの互換性に関する非常に誤った懸念から、Zendは出荷することを選択しましたMacバージョン(開発専用)は32ビットのみ。そのため、64ビットで他のすべての場所で実行される32ビットでアプリケーションを開発する必要があります。これにより、かなりの数のバグが発生し、アプリケーションの自動テストに失敗しました。これにより、開発、テスト、ステージング、QA、および本番環境全体で同一のソフトウェアスタックであるZSの主要な目的の1つが失われます。私は彼らにこれを変えるように話そうとしましたが、彼らはすぐに私を無視し始めました。
もう1つの大きな問題は、ジョブキューがHTTPリクエストを介してのみジョブを処理できることです。APIは、他のメソッド(はるかに賢明なコマンドライン呼び出しなど)を許可するように設定されていますが、機能するのはHTTPだけです。これにより、Webサーバー接続を、設計上長時間実行される傾向があるタスクと結び付ける必要があります。そのため、Webコンテキストから除外する必要があります。そして、それはあなたにフープを飛び越えて、ブラウザのURLにアクセスすることによって世界があなたの仕事を引き起こすことができないようにすることを強制します。それはただのばかげた決断です。
他の例としては、APIを介してZend Monitorに送信されるカスタムイベントの処理が不十分である、シェバンラインによってトリガーされたときにMacで中断するPHPバイナリのphp-cliラッパー、キャッシュ内のヘルスとパフォーマンスのレポートの完全な(完全な)欠如がありますツール(これはZS 6で変更されると言われていますが)、および恥ずかしいほど不完全なドキュメント。私は続けることができました...
さて、これらの欠点と、乗車に伴う無駄な時間とリソースは、明らかに私たちのメリットを上回っていませんが、私たちが費やしている金額については、間違いなくもっと期待しています。