2

フレームワークなしでneoclientを使用するにはどうすればよいですか。これらのフレームワークのようなものを使用していないlaravelか、使用していないためsymphonyです。バックエンドは純粋なコアPHPで書かれています。単に私の質問は、コアの目的でフレームワークを使用していない場合、なぜそれらを使用して dbms を使用する必要があるかということです。

ベンダーフォルダーのサイズを計算すると、102 MB. そのため、単一のリクエストで RAM の大部分が使用されます。私の推測では、Neo-client を使用している間、ベンダー フォルダーに含まれるすべてのファイルが読み込まれます。だから私を修正してください.neoclientを個別に使用できる場合は喜んで使用しますが、依存関係なしでNeo-Clientを使用することの短所を教えてください.

4

2 に答える 2

3

私は NeoClient の作成者兼メンテナーです。

依存関係に関する質問に簡単に答えるには:

  1. いくつかの Symfony の依存関係を使用して、非常に柔軟な構成管理を行い、プロキシなしでクラスターで動作する可能性を提供し、組み込みの拡張機能を持つ可能性も提供します。

  2. どのフレームワークにも厳しいという意味ではありません。

  3. 開発モードでは、クライアントのブーストストラップは確実に最適化されていません。セットアップ中に単一のフラグでクライアントを最適化する方法の詳細が README にあります。パフォーマンスは非常に優れています。ベンチマークの結果は次のとおりです。

結果フォーマッターを有効にして、キャッシュなしでクライアントのインスタンス化をベンチマークし、1000 回実行 47.425533056259 秒で実行、8.5 MB のメモリを使用

キャッシュが有効な状態でのクライアント インストールのベンチマーク、1000 回の実行 0.068459987640381 秒で実行、8.5 MB のメモリを使用

NeoClient は現在、私が知っている 20 を超えるスタートアップや企業で使用されており、企業サポートのために GraphAware (私が勤務している会社) によって支援されています。

また、NeoClient に実装される Bolt ドライバー (neo4j 3.0 のバイナリ プロトコル) https://github.com/graphaware/neo4j-bolt-php を作成しました (マルチプロトコルは何かではないため、これには少し作業が必要になります)。と思って作成しました)

一方、依存関係の量は、すべての依存関係のすべてのオブジェクトをインスタンス化することを意味するものではありません。Guzzle は PSR-7 サポートと Curl 抽象化のために使用されます。YAML で構成を提供し、すべてのサービスが遅延モードの場合は YAML が使用されます。つまり、内部で使用されるすべてのコマンドは、呼び出されたときに実際にメモリにロードされます。

于 2015-10-02T12:30:51.857 に答える
1

ネオクライアント

NeoClient は Symfony フレームワークの一部のみを使用しています。リスト:

"require": {
      "php": ">= 5.5",
      "guzzlehttp/guzzle": "^6.0",
      "monolog/monolog": "~1.1",
      "symfony/yaml": "^2.7",
      "symfony/config": "^2.7",
      "symfony/dependency-injection": "^2.7",
      "symfony/event-dispatcher": "^2.7",
      "graphaware/neo4j-response-formatter": "^1.0"
},

さらに、ファイルのロードにはオートローダー (通常は composer が提供) が使用されます。これにより、実行時に実際に使用される (含まれている/必要な) ファイルのみが読み込まれます。したがって、メモリ内に 100MB の PHP コードが残ることはありません。

( memory_get_usageおよびmemory_get_peak_usageを使用して)テストを実行して、 NeoClient の有無にかかわらずアプリケーションが消費するメモリ量を確認します。

代替案

このセクションをチェックして、php の代替ドライバーを見つけることができます。

neo4jphp - 有望に見えます。依存関係はありません:

"require": {
  "php": ">=5.3.0",
  "ext-curl": "*"
},

したがって、このライブラリは非常に軽量です。


注: Neo4j サーバーは、JSON 出力を備えた単なる REST API です。プロジェクトのニーズに合わせて、いつでも簡単なライブラリを実装できます。ただし、軽量の代替手段がすでに存在するため、お勧めしません。

于 2015-10-02T09:39:16.197 に答える