如何实现不同服务器上两个Symfony项目的Entity/Repository跨调用?
问题分析与解决方案
你用ftp://路径配置Symfony服务资源的方式完全行不通,Symfony的服务加载只能处理本地文件系统的类文件,没法直接通过FTP远程加载代码。报错里的“连接被拒绝”大概率是目标服务器没开FTP服务,但就算开了,这种方式也不符合Symfony的服务加载逻辑,绝对不能这么干。
针对跨服务器Symfony项目共享Entity/Repository的需求,给你几个可行的方案:
- API接口调用(推荐):在目标项目里把需要调用的Repository业务逻辑封装成REST API接口,比如要获取用户数据就写个
/api/users/{id}接口。然后在发起调用的项目里用Guzzle这类HTTP客户端请求这个接口,拿到返回的数据。这种方式完全解耦两个项目,安全又符合分布式架构的设计思路。 - 共享Composer包:把两个项目共用的Entity和Repository抽成独立的Composer包,放到私有Composer仓库(或者本地仓库),然后两个项目都通过Composer安装这个包。这样两边用的是同一套代码,共享数据库的话直接操作自己项目里的这个包就行,不需要跨服务器调用代码。
- 直接操作数据库(不推荐):如果嫌上面两种方式麻烦,也可以在调用方项目里配置指向共享数据库的连接,自己写对应的Entity和Repository(或者复制目标项目的代码),直接操作数据库。但这种方式会导致代码重复,后期维护成本高,还会让两个项目耦合严重,不建议在生产环境用。
内容的提问来源于stack exchange,提问作者adahox_
相关产品推荐
相关产品推荐

