Symfony 2 - Behandeln Sie eine Kernel-Anfrage (von einer anderen App) innerhalb eines Dienstes

Zunächst möchte ich sagen, dass ich Symfony2 als großartiges Framework empfinde. Daher erstelle ich mit FOSRestBundle usw. eine REST-konforme API. Ich möchte jedoch nicht nur eine Symfony2-Anwendung mit der API unterstützen, sondern benötige mehrere andere Symfony2-Anwendungen mit der API interagieren. Ich könnte dies in der Tat mit der Verwendung von cURL tun und nur einfache http - Anfragen an die API stellen, aber da sich die API immer auf demselben Server befindet wie alle anderen Projekte, möchte ich die API - Anfragen direkt über den Kernel bearbeiten (also nein cURL). Dies ist mit einem erstaunlichen Geschwindigkeitsschub und einem geringeren Ressourcenverbrauch verbunden.

Um dies zu ermöglichen, habe ich zunächst darüber nachgedacht, einfach den AppKernel von seinem Ziel zu fordern:

require_once '/path/to/external/AppKernel.php';

Dann würde ich eine Instanz von AppKernel erstellen und die "Unteranforderung" hier behandeln. Aber dann bekam ich sofort Fehler und sagte, einige Bundles könnten nicht geladen werden usw. Das ist logisch, weil ich nur die AppKernel-Datei benötigte, nicht die Abhängigkeiten. Also habe ich den Autoloader des API-Projekts (/app/autoload.php) eingebunden, aber dies hat die Probleme nicht gelöst, ich habe Fehler in Bezug auf neu deklarierte Klassen / Funktionen usw. bekommen.

Dies würde ungefähr so ​​aussehen:

require_once '/path/to/external/AppKernel.php';
$class = 'Namespace\AppKernel';

// I tried this, but this does not work...
$loader = require_once $path . '/autoload.php';

/**
  * @var HttpKernel $kernel
  */
$kernel = new $class('dev', true);

// $request contains a custom Request object created with 'Request::create()'
$response = $kernel->handle($request);
$response->send();

$kernel->terminate($request, $response);

return $response;

Ich glaube, ich mache alles falsch, wenn ich versuche, mit dem AppKernel damit umzugehen. Vielleicht kennt jemand einen besseren Weg, um ein externes Symfony2-Projekt aufzurufen (ohne cURL).

Ich hoffe wirklich, jemand könnte mir helfen!

Steffen

Antworten auf die Frage(1)

Ihre Antwort auf die Frage