2015-06-13 45 views
0

比方說,我在本地主機找到PHP應用程序外部調用

PHP編寫的單片和龐大的代碼庫的項目有一些服務,可以在運行時報告所有外部呼叫做?一些代碼可能直接使用php或使用curl代替。

也許正確的做法不是一個PHP應用程序來做到這一點,但某種守護進程,可以從操作系統給你的信息。我正在使用Mac OS X.

任何想法?

回答

1

您可以使用觀察者模式,類別已存在於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); 
     } 
    } 
} 

見類SplObserverSplSubject

http://php.net/manual/de/class.splobserver.php

如果外部調用是傳出網絡連接,您可以使用ngreptcpdump收集呼出或傳入流量

第三種可能性,可能是最簡單和最快的,就是設置代理(如squid)。您可以看到其日誌文件中調用的所有URL,您不必更改任何PHP代碼。只是你的環境需要知道代理:

http_proxy http://localhost:3218 
https_proxy http://localhost:3218 
ftp_proxy http://localhost:3218 
+0

對不起,我應該已經清楚,這是遺留的代碼從其他團隊繼承。對代碼進行更改是不可能的。我需要的是這樣的:https://docs.newrelic.com/docs/apm/applications-menu/monitoring/external-services-dashboard –

+0

@MauricioLopez我增加了另一種可能性。如果沒有執行上述任何一件事情,我不認爲遺物是有效的。這將是神奇的。編程是邏輯,而不是魔術D: – DanFromGermany