2016-10-31 94 views
1

我的服務器上有兩個PHP應用程序。其中之一有RESTAPI,我想在第二個應用程序中使用和渲染。什麼是更好的方式然後蜷縮API?我可以以某種方式直接詢問php-fpm的數據或類似的東西嗎?PHP - 跨應用程序通信

通過網絡服務器做捲曲和請求似乎是錯誤的。

所有這一切發生在單臺服務器上 - 我知道它可能不能很好地擴展,但它的小項目。

+0

你會好起來的捲曲,它將分離添加到您的組件,如果將來必須將它們移動到不同的服務器會發生什麼?另外,你也可以使用http://guzzlephp.org/作爲你的客戶端。 – Scuzzy

+0

@Scuzzy'guzzle'不是一種替代品,因爲它建立在'curl'之上。 – arkascha

+0

您也可以使用套接字進行通信甚至共享內存。但我懷疑這是一個好主意。 – arkascha

回答

1

爲什麼要使用REST,如果你可以直接訪問函數?

如果一切都在同一臺服務器上,那麼就不需要使用某個REST,因爲它通過網絡服務器進行了一些毫無意義的運行。 但是,如果它已經在那裏,你不關心開銷(如果沒有太多的交通進行,那麼它會有道理),然後使用file_get_contents而不是curl,它更容易使用,但我懷疑它是更快/比較慢;兩者都是對的。

您也可以在另一個端口上使用另一個Web服務器(第二個虛擬主機)供內部使用。這樣事情就很好地分開了。

如果一切都在不同的服務器,但本地網絡,然後使用套接字將是最快的。

+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