Php 如何从其他实例调用zend2实例
我有两个基于zend 2框架的应用程序,它们部署在同一台服务器上。 app1将向app2调用http请求。 为了提高性能,我想绕过http层,从代码中创建一个zend 2(app2)实例,然后重写它的请求并获得对变量的输出响应 以下是我的尝试:Php 如何从其他实例调用zend2实例,php,zend-framework2,Php,Zend Framework2,我有两个基于zend 2框架的应用程序,它们部署在同一台服务器上。 app1将向app2调用http请求。 为了提高性能,我想绕过http层,从代码中创建一个zend 2(app2)实例,然后重写它的请求并获得对变量的输出响应 以下是我的尝试: public function callAPIDirect($url, $params, $method = 'GET') { $app1_dir = getcwd(); chdir(APP2_PATH); require APP
public function callAPIDirect($url, $params, $method = 'GET')
{
$app1_dir = getcwd();
chdir(APP2_PATH);
require APP2_PATH . '/init_autoloader.php';
$app2Configuration = require APP2_PATH . '/config/application.config.php';
$app2SmConfig = isset($app2Configuration['service_manager']) ? $app2Configuration['service_manager'] : array();
$app2ServiceManager = new \Zend\ServiceManager\ServiceManager(new \Zend\Mvc\Service\ServiceManagerConfig($app2SmConfig));
$app2ServiceManager->setService('ApplicationConfig', $app2Configuration);
$app2ServiceManager->get('ModuleManager')->loadModules();
$app2ListenerFromAppConfig = isset($app2Configuration['listeners']) ? $app2Configuration['listeners'] : array();
$app2Config = $app2ServiceManager->get('Config');
$app2ListenerFromConfigService = isset($app2Config['listeners']) ? $app2Config['listeners'] : array();
$app2Listeners = array_unique(array_merge($app2ListenerFromAppConfig, $conveyListenerFromConfigService));
$app2 = $app2serviceManager->get('Application')->bootstrap($app2Listeners);
$request = $app2->getRequest();
$uri = new \Zend\Uri\Http($url);
$queryString = $uri->getQuery();
$request->setMethod($method);
$request->setUri($uri);
$request->setRequestUri($uri->getPath());
$result = $app2->run();
chdir($app1_dir);
return $result;
}
但Zend framework的类似乎已经加载到app1中,而无法加载到app2中。此外,app2无法正确实例化
谢谢不要尝试通过在一个ZF2应用程序中调度另一个ZF2应用程序来实现这一点。Zend\Mvc\应用程序不是无状态的,将无法执行此操作 最方便的情况是在应用程序之间使用消息传递。您可以使用包含代理的消息队列来回发送消息。您将消息从app1发送到代理,app2将在代理中侦听消息(反之亦然)
消息队列的两种经验证的技术是和。消息传递将使您的两个应用程序更具可扩展性、更好的可维护性,并将它们解耦。这些好处远远大于从一个应用程序直接调用php到另一个应用程序的(非常小的)速度增益。您可以尝试使用命令行路由运行其他应用程序,看看会发生什么。。。