web-dev-qa-db-ja.com

PHPフロントエンドがGo(または他の言語の組み合わせ)で記述されたバックエンドと通信することをどのように許可しますか?)

私はPHPが好きです。目的を達成するのはそれほど複雑ではありません。HTMLをその中にまっすぐに書くことができます。私はそれに慣れていると思います。私はGoも好きです。それは、Node.jsではないWebアプリのバックエンドを作成するための何かを探しているときに発見したばかりです(どこでもコールバックを守ることはできません)。

PHPでほとんどのページ生成を実行できるようにしたいと思います。これは、ページ生成で快適に実行できることだからですが、後部の手間のかかる作業はGoで実行する必要があります。バックエンドの「エンジン」は、最初はユーザーがスケジュールしたジョブなどを実行できる必要がありますが、後でWebサービスのエンドポイントなどに拡張する必要があります。これは、コンパイルされた静的に型指定された言語で実行する方が快適だと思います。行くように。

これを機能させる唯一の方法は、HTTPサーバー上にすべてのPHPを用意し、Goで記述されたエンジンに対してRESTまたはSOAPを呼び出すことです。 。これが2つの言語間の相互運用性を可能にする唯一の方法ですか、それとも他の方法がありますか?

2
Adam

ソケットは、言語の相互運用を行うための完全に受け入れられる方法です。 2つの異なるプロセス間でメッセージを渡すために使用するプロトコルは、それらの1つだけを他の世界に公開することを計画している場合は、それほど重要ではありません。長期計画で両方を利用できるようにする場合は、JSONを使用したHTTPなどの標準プロトコルを使用するのが適切なソリューションです。

FFI(外部関数インターフェイス)も潜在的な解決策ですが、PHPと、これがプレーンソケットを使用するよりも良いか悪いかを示すFFIサポートについてはよくわかりません。

1
davidk01

PHPはサーバー側のプログラミング言語です。他のアプリケーションと通信する場合は、GoにWebサービスを実装し、PHPこれらのWebサービスへのリクエストを実行する必要があります。確立されたフレームワークのほとんどにすでに実装されているさまざまな方法があります(Laravel、 Phalcon、Symfony、Zend、CodeIgniter、CakePHPなど-リストは本当に巨大です)PHPプロジェクトの背後にあるフレームワークなしでこれを達成する方法は cURL呼び出し

ただし、このワークフローは次のとおりです。ユーザーは、PHPサーバー側コンポーネントに対してリクエストを実行してアクションを開始する必要があります。サーバー側コンポーネントは、Goに対してcURLリクエストを実行します。バックエンドとその後、ユーザーに適切な応答を返します。これは、ユーザーがGoバックエンドに直接リクエストを行うのと基本的に同じですが、PHPコンポーネントで中間処理を実行できる点が異なります。 GoバックエンドへのリクエストとGoバックエンドからの応答。

0
Thyamarkos