假设我有一个用本地主机用PHP编写的Monolithic和庞大的代码库项目
是否有一些服务能够在运行时报告所有外部调用?有些代码可能直接使用php或使用curl代替。
也许正确的方法不是php应用程序来做这件事,而是某种守护进程可以从操作系统中提供这些信息。我使用的是Mac OS X.
有什么想法吗?
答案 0 :(得分:1)
您可以使用 Observer Pattern ,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
来收集外发或传入流量。
第三种可能性,可能是最简单和最快的,是设置代理(如鱿鱼)。您可以在其日志文件中看到所有调用的URL,而不必更改任何PHP代码。只是你的环境需要知道代理:
http_proxy http://localhost:3218
https_proxy http://localhost:3218
ftp_proxy http://localhost:3218