Download the PHP package octo-php/symfony-bridge without Composer

On this page you can find all versions of the php package octo-php/symfony-bridge. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package symfony-bridge

octo-php/symfony-bridge

Core Symfony HttpKernel adapter pour la plateforme async PHP — exécute une application Symfony sur le runtime OpenSwoole via ServerBootstrap::run().

Installation

Compatibilité

Dépendance Versions supportées
PHP >= 8.3
Symfony HttpKernel ^6.4 LTS, ^7.0
Symfony HttpFoundation ^6.4 LTS, ^7.0
octo-php/runtime-pack ^0.1

Bootstrap minimal

Le bridge est un callable handler pur : aucune commande CLI custom n'est imposée. Pour une intégration automatique via bundle et recipe Flex, voir octo-php/symfony-bundle.

Variables d'environnement

Variable Type Défaut Description
OCTOP_SYMFONY_MEMORY_WARNING_THRESHOLD int (bytes) 104857600 (100 Mo) Seuil RSS au-delà duquel un warning est émis après chaque reset
OCTOP_SYMFONY_RESET_WARNING_MS int (ms) 50 Seuil de durée de reset au-delà duquel un warning est émis
OCTOP_SYMFONY_KERNEL_REBOOT_EVERY int 0 (désactivé) Nombre de requêtes avant un reboot complet du kernel (shutdown() + boot())

Cycle de vie d'une requête

Séquence invariante pour chaque requête :

  1. Extraire X-Request-Id depuis la requête OpenSwoole
  2. Convertir OpenSwoole Request → HttpFoundation Request
  3. Vérifier ResponseState.isSent() (skip si 408/503 déjà envoyé par le runtime)
  4. HttpKernel::handle() → obtenir la Response Symfony
  5. Convertir HttpFoundation Response → OpenSwoole Response (via ResponseFacade)
  6. $kernel->terminate($request, $response) (collecte Profiler ici)
  7. ResetManager::reset() (reset services + hooks custom)
  8. Métriques + vérification kernel reboot

Métriques exposées

Métrique Type Description
symfony_requests_total counter Nombre total de requêtes traitées
symfony_request_duration_ms histogram Durée de traitement par le HttpKernel
symfony_exceptions_total counter Nombre d'exceptions levées par le HttpKernel
symfony_reset_duration_ms histogram Durée du reset entre requêtes
memory_rss_after_reset_bytes gauge Mémoire RSS après chaque reset

La RSS inclut la mémoire partagée entre processus et ne constitue pas une preuve formelle de leak. Utilisez conjointement la RSS et le delta mémoire entre requêtes pour diagnostiquer les leaks.

Streaming natif

Le bridge supporte nativement le streaming via ResponseFacade::write(), sans buffering intermédiaire.

StreamedResponse

Le callback est intercepté via ob_start() et chaque chunk est redirigé vers ResponseFacade::write(). Si le callback lève une exception, elle est loguée et la réponse est terminée avec le contenu déjà envoyé.

StreamedJsonResponse

StreamedJsonResponse (Symfony 6.3+) est supporté via le même mécanisme de streaming natif.

SSE basique (Server-Sent Events)

Quand Content-Type: text/event-stream est détecté, le bridge désactive automatiquement la compression HTTP et le buffering (X-Accel-Buffering: no, Cache-Control: no-cache). Chaque chunk est flushé immédiatement.

Pour des helpers SSE avancés (formatage W3C, keep-alive, reconnection ID), voir octo-php/symfony-realtime.

Recommandations anti-leak

Dans un processus long-running, les services stateful fuient entre requêtes si ils ne sont pas réinitialisés.

Services à déclarer comme ResetInterface

Tout service qui accumule de l'état entre requêtes doit implémenter Symfony\Contracts\Service\ResetInterface :

Patterns à éviter

Configuration Doctrine recommandée

Enregistrer un DoctrineResetHook pour nettoyer l'EntityManager :

Avec le bundle, les services implémentant ResetHookInterface sont auto-taggés et injectés automatiquement dans le ResetManager.

Kernel reboot (fallback robuste)

Si le reset standard ne suffit pas (leaks dans des services non-resettables), activez le reboot périodique :

Le kernel est reconstruit (shutdown() + boot()) tous les N requêtes. Le worker n'est pas tué — seul le kernel et le container sont reconstruits.

Concurrence et async-safety

Le HttpKernel Symfony s'exécute dans la coroutine de requête OpenSwoole. Les I/O hookées (réseau, fichiers) yield automatiquement à l'event loop.

Doctrine / PDO

Utiliser via IoExecutor / BlockingPool si les hooks PDO ne sont pas validés. Configurer le pool de connexions pour le long-running :

Guzzle / HttpClient

Coroutine-safe si SWOOLE_HOOK_CURL est actif (vérifié au boot par le runtime pack). Aucune action requise.

Filesystem

Coroutine-safe via SWOOLE_HOOK_FILE. Aucune action requise.

Sessions

Ne pas utiliser les sessions fichier natives PHP en long-running (state leak entre requêtes). Utiliser un handler de session externe :

Incompatibilités

Request::createFromGlobals()

Request::createFromGlobals() lit les superglobales PHP ($_SERVER, $_GET, $_POST, etc.) qui ne sont pas mises à jour par OpenSwoole entre les requêtes. Toute bibliothèque utilisant createFromGlobals() n'est pas supportée en mode long-running.

Utilisez toujours l'objet Request injecté par le bridge.

Superglobales PHP

Le bridge ne lit ni ne modifie les superglobales PHP. Toutes les données sont extraites exclusivement de l'objet OpenSwoole\Http\Request.

État global PHP

timezone, locale, mb_internal_encoding doivent être configurés une seule fois au boot du worker et ne doivent pas être modifiés par requête :

RequestIdProcessor (Monolog)

Le bridge fournit un RequestIdProcessor qui propage le request_id dans tous les logs Monolog.

Enregistrement manuel

Enregistrement automatique

Avec le bundle octo-php/symfony-bundle, le RequestIdProcessor est auto-enregistré comme processeur Monolog si Monolog est disponible.

ResetHookInterface custom

Pour enregistrer un hook de reset custom exécuté après le reset Symfony principal :

Chaque hook est exécuté dans un try/catch : un hook qui échoue ne bloque pas les suivants. L'erreur est loguée.

Avec le bundle, les services implémentant ResetHookInterface sont auto-taggés via le ResetHookCompilerPass.

Intégration Profiler / WebDebugToolbar

En mode dev (APP_DEBUG=true), le Profiler et la WebDebugToolbar Symfony fonctionnent normalement :

Le Profiler est automatiquement désactivé en mode production (aucun overhead).

Gestion des erreurs

Aucune exception ne remonte au runtime pack. Toutes sont interceptées et converties en réponse HTTP.

Packages complémentaires

Package Description
symfony-bundle Auto-configuration Symfony, recipe Flex
symfony-messenger Transport Messenger in-process via channels OpenSwoole
symfony-realtime WebSocket + helpers SSE avancés
symfony-otel Export OpenTelemetry (traces + métriques)
platform Meta-package installant toute la stack

Licence

MIT


All versions of symfony-bridge with dependencies

PHP Build Version
Package Version
Requires php Version >=8.4
octo-php/runtime-pack Version ^0.1
psr/log Version ^3.0
symfony/http-foundation Version ^6.4|^7.0
symfony/http-kernel Version ^6.4|^7.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package octo-php/symfony-bridge contains the following files

Loading the files please wait ...