Browse Source

[php] Symfony with Frankenphp in Worker mode using phpruntime (#7756)

* Frankenphp Symfony worker mode

* Add default route
Phpruntime or Frankenphp need it

* Fix Caddyfile for worker mode

* Change to worker.php
Joan Miquel 2 years ago
parent
commit
9fa82a5d70

+ 23 - 0
frameworks/PHP/symfony/benchmark_config.json

@@ -89,6 +89,29 @@
       "display_name": "symfony-workerman",
       "display_name": "symfony-workerman",
       "notes": "",
       "notes": "",
       "versus": "php"
       "versus": "php"
+    },
+    "franken": {
+      "plaintext_url": "/plaintext",
+      "json_url": "/json",
+      "db_url": "/db",
+      "update_url": "/updates?queries=",
+      "query_url": "/queries?queries=",
+      "fortune_url": "/fortunes",
+      "port": 8080,
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "symfony",
+      "language": "PHP",
+      "flavor": "PHP8",
+      "orm": "Full",
+      "platform": "Frankenphp",
+      "webserver": "caddy",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "symfony-frankenphp",
+      "notes": "Use php 8.2",
+      "versus": "php"
     }
     }
   }]
   }]
 }
 }

+ 28 - 0
frameworks/PHP/symfony/deploy/Caddyfile

@@ -0,0 +1,28 @@
+{
+	# Debug
+    {$CADDY_DEBUG}
+
+	frankenphp {
+		#worker /path/to/your/worker.php
+		{$FRANKENPHP_CONFIG}
+	}
+}
+
+:8080
+
+route {
+    root * /symfony/public
+
+    # If the requested file does not exist, try index files
+    @indexFiles file {
+        try_files {path} {path}/worker.php worker.php
+        split_path .php
+    }
+    rewrite @indexFiles {http.matchers.file.relative}
+    
+    # FrankenPHP!
+    @phpFiles path *.php
+    php @phpFiles
+
+    respond 404
+}

+ 9 - 0
frameworks/PHP/symfony/public/worker.php

@@ -0,0 +1,9 @@
+<?php
+
+use App\Kernel;
+
+require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
+
+return function (array $context) {
+    return new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']);
+};

+ 1 - 0
frameworks/PHP/symfony/src/Controller/PlaintextController.php

@@ -8,6 +8,7 @@ use Symfony\Component\Routing\Annotation\Route;
 class PlaintextController
 class PlaintextController
 {
 {
     /**
     /**
+     * @Route("/")
      * @Route("/plaintext")
      * @Route("/plaintext")
      */
      */
     public function plaintext(): Response
     public function plaintext(): Response

+ 31 - 0
frameworks/PHP/symfony/symfony-franken.dockerfile

@@ -0,0 +1,31 @@
+FROM dunglas/frankenphp
+
+# add additional extensions here:
+RUN install-php-extensions \
+    pdo_mysql \
+    intl \
+    opcache
+
+RUN apt-get update -yqq > /dev/null && apt-get upgrade -yqq > /dev/null && \
+    apt-get install unzip > /dev/null
+
+COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer
+
+EXPOSE 8080
+
+COPY deploy/Caddyfile /etc/Caddyfile
+
+ADD . /symfony
+WORKDIR /symfony
+
+RUN mkdir -m 777 -p /symfony/var/cache/{dev,prod} /symfony/var/log
+RUN composer install --no-dev --no-scripts --quiet
+
+RUN composer require runtime/frankenphp-symfony
+ENV FRANKENPHP_CONFIG="worker ./public/worker.php"
+ENV APP_RUNTIME=Runtime\\FrankenPhpSymfony\\Runtime
+
+RUN COMPOSER_ALLOW_SUPERUSER=1 composer dump-autoload --no-dev --classmap-authoritative
+RUN COMPOSER_ALLOW_SUPERUSER=1 composer dump-env prod
+
+#ENV CADDY_DEBUG=debug