2016-10-31 17 views
1

私のサーバーには2つのPHPアプリケーションがあります。そのうちの1つにRESTAPIがあります。これは2番目のアプリケーションで消費してレンダリングしたいものです。その後、APIをカールするより良い方法は何ですか?どういうわけか、php-fpmに直接データなどを尋ねることはできますか?PHP - アプリケーション間通信

ウェブサーバーでカールしてリクエストしているように見えます。

これはすべて単一のサーバーで発生します。私はそれがおそらくうまくスケールされていませんが、その小さなプロジェクトです。

+0

あなたはカールしても問題ありません。これはコンポーネントに分離をもたらします。将来別のサーバーに移動する必要がある場合はどうなりますか?さらに、クライアントとしてhttp://guzzlephp.org/を使用して調べることもできます。 – Scuzzy

+0

@Scuzzy 'guzzle'は、' curl'の上にビルドされているので、代替ではありません。 – arkascha

+0

また、通信用のソケットや共有メモリを使用することもできます。しかし、私はそれが良い考えであるとは思わない。 – arkascha

答えて

1

機能に直接アクセスできる場合は、なぜRESTを使用しますか?

すべてが同じサーバー上にある場合は、ウェブサーバーを多少意味のないものにするので、いくつかのRESTは必要ありません。 しかし、既に存在していて、オーバーヘッドについて気にしない場合(多くのトラフィックがそれほどうまくいかない場合は意味をなさなくなります)、curlの代わりにfile_get_contentsを使用すると、使いやすくなりますが、 /もっとゆっくり;どちらも正しい。

内部使用のために別のポートで2番目のWebサーバー(2番目の仮想ホスト)を使用することもできます。そうすれば、物事はうまく分離されます。

すべてが異なるサーバー上にあるが、ローカルネットワークは、その後、ソケットを使用すると、最速のだろう。場合)

+0

私は彼らがどのように変更するかもしれないかわからないので、私はAPIを実際にはないと確信しているので、直接関数を呼びたくない。 私は内部使用のために別個のバーチャルホストをスピンアップすることは考えていませんでしたが、これが最良の解決策になると思います。私はfile_get_contentsも試してみます。 ありがとうございます! – Krisa

0

ウェブサーバーでカールしてリクエストしているように見えます。 - 私はそれに同意しません。同じサーバー上にあっても、Php CURLを使用して達成したいことを達成できます。

+1

何かが可能ではなく、何か間違っていると感じることは、非常に明確な記述です。 – arkascha

+0

@arkaschaありがとうございます。 – Krisa

0

私は同じ問題にあったが、私は、MySQLへの「キュー」タスクを使用して、それを解決し、ワーカーは任意のプーリング方法を使用することができ、PHPは新しいサーバーサイドワーカーを実行することができます。 結果は同じデータベースに保存されているため、PHPページは結果またはステータスをいつでもロードできます。

+0

これは可能ですが、時間に関係のないタスクの場合にのみ可能です。そのため、データベースからの変更をポーリングする必要があるため、遅延が役割を果たさない場合です。 – arkascha

+0

それは大きなオーバーヘッドになりませんでしたか?私はデータベースから直接データを得ることができますが、APIを使用する理由は単なる物を分けることに過ぎません。データの複製は不要です。 – Krisa

+0

@Krisaデータベースを使ってアプリケーション間でデータを交換することは、重複しません!逆に、複数のアプリケーションが共通のデータベースを共有できるため、データベースサーバーは通信ハブとして機能します。 – arkascha

関連する問題