0
比方說,我在本地主機找到PHP應用程序外部調用
PHP編寫的單片和龐大的代碼庫的項目有一些服務,可以在運行時報告所有外部呼叫做?一些代碼可能直接使用php或使用curl代替。
也許正確的做法不是一個PHP應用程序來做到這一點,但某種守護進程,可以從操作系統給你的信息。我正在使用Mac OS X.
任何想法?
比方說,我在本地主機找到PHP應用程序外部調用
PHP編寫的單片和龐大的代碼庫的項目有一些服務,可以在運行時報告所有外部呼叫做?一些代碼可能直接使用php或使用curl代替。
也許正確的做法不是一個PHP應用程序來做到這一點,但某種守護進程,可以從操作系統給你的信息。我正在使用Mac OS X.
任何想法?
您可以使用觀察者模式,類別已存在於SPL類\SplObserver
和\SplSubject
中。 當你有一個非常大的項目,你肯定已經抽象了它的大部分,並有捲曲調用和數據庫等包裝(如果沒有,你應該考慮去按照設計模式!)。
class YourCurlWrapper implements \SplSubject {
public function setObservers($observers) {
$this->observers = $observers;
return $this;
}
//notify observers(or some of them)
public function notify() {
foreach ($this->observers as $value) {
$value->update($this);
}
}
}
見類SplObserver
和SplSubject
。
http://php.net/manual/de/class.splobserver.php
如果外部調用是傳出網絡連接,您可以使用ngrep
或tcpdump
收集呼出或傳入流量。
第三種可能性,可能是最簡單和最快的,就是設置代理(如squid)。您可以看到其日誌文件中調用的所有URL,您不必更改任何PHP代碼。只是你的環境需要知道代理:
http_proxy http://localhost:3218
https_proxy http://localhost:3218
ftp_proxy http://localhost:3218
對不起,我應該已經清楚,這是遺留的代碼從其他團隊繼承。對代碼進行更改是不可能的。我需要的是這樣的:https://docs.newrelic.com/docs/apm/applications-menu/monitoring/external-services-dashboard –
@MauricioLopez我增加了另一種可能性。如果沒有執行上述任何一件事情,我不認爲遺物是有效的。這將是神奇的。編程是邏輯,而不是魔術D: – DanFromGermany