{"componentChunkName":"component---src-templates-post-jsx","path":"/en/running-drupal-with-frankenphp","result":{"data":{"markdownRemark":{"html":"<p>The PHP ecosystem is evolving rapidly, particularly in the area of <strong>execution and performance</strong>.<br>\nNew approaches are emerging to <strong>simplify deployment</strong> and <strong>accelerate response times</strong> for applications.</p>\n<p>Among them, <strong>FrankenPHP</strong> stands out with a model different from the classic architectures based on <strong>PHP-FPM + Nginx/Apache</strong>.</p>\n<p>The question arises: <strong>can you run Drupal with FrankenPHP</strong>, and when does it make sense?</p>\n<hr>\n<h2>How Drupal Works Today</h2>\n<p>In a classic architecture, Drupal relies on:</p>\n<ul>\n<li>A <strong>web server</strong> (Nginx or Apache)  </li>\n<li><strong>PHP-FPM</strong> to execute PHP code  </li>\n<li>A <strong>database</strong> (MySQL, MariaDB, PostgreSQL…)  </li>\n<li>Optionally a <strong>caching system</strong> (Redis, Memcached, CDN…)</li>\n</ul>\n<p>This model, solid and proven, nonetheless presents:</p>\n<ul>\n<li><strong>Multiple infrastructure layers</strong></li>\n<li><strong>Complex configuration</strong></li>\n<li><strong>Non-negligible maintenance costs</strong></li>\n</ul>\n<hr>\n<h2>What is FrankenPHP?</h2>\n<p><strong>FrankenPHP</strong> is a <strong>modern application server for PHP</strong>, built around:</p>\n<ul>\n<li><strong>Caddy</strong>, a fast and modern HTTP server  </li>\n<li><strong>Direct PHP code execution</strong> (without PHP-FPM)  </li>\n<li>A <strong>persistent (worker) mode</strong> inspired by solutions like Node.js or Swoole  </li>\n</ul>\n<h3>Goal</h3>\n<p>Simplify the architecture and <strong>improve performance</strong> by reducing intermediate layers.</p>\n<hr>\n<h2>Advantages for Drupal</h2>\n<h3>1. Infrastructure Simplification</h3>\n<p>With FrankenPHP, you can:</p>\n<ul>\n<li>Completely eliminate <strong>PHP-FPM</strong>  </li>\n<li>Reduce the number of components to maintain  </li>\n<li>Simplify <strong>deployment</strong>, especially in containers (Docker)</li>\n</ul>\n<p>In short, <strong>less complexity = less friction</strong>.</p>\n<hr>\n<h3>2. Performance Improvement</h3>\n<p>The <strong>persistent mode</strong> offers the possibility of:</p>\n<ul>\n<li>Reducing request startup times  </li>\n<li>Reusing certain resources and dependencies in memory  </li>\n<li>Gaining <strong>response speed</strong>, especially on high-traffic sites</li>\n</ul>\n<p>This is promising territory for performance-oriented projects.</p>\n<hr>\n<h3>3. Better Developer Experience</h3>\n<p>FrankenPHP offers a modern approach suited to current practices:</p>\n<ul>\n<li><strong>Simple configuration</strong></li>\n<li><strong>Quick startup</strong></li>\n<li><strong>Smooth Docker integration</strong></li>\n</ul>\n<p>A pleasant experience for developers looking to test or prototype quickly.</p>\n<hr>\n<h2>Limitations and Caveats</h2>\n<h3>1. Compatibility with Drupal</h3>\n<p>Drupal was not originally designed for a <strong>persistent mode</strong>.<br>\nThis entails several precautions:</p>\n<ul>\n<li>Management of <strong>memory</strong> and <strong>persistent states</strong>  </li>\n<li>Risk of <strong>unexpected behavior</strong> with certain modules  </li>\n<li>Need for <strong>thorough testing</strong> before real-world deployment</li>\n</ul>\n<p>Each use case merits specific validation.</p>\n<hr>\n<h3>2. Still a Young Ecosystem</h3>\n<p>FrankenPHP remains a recent technology:</p>\n<ul>\n<li>Few <strong>real-world feedback</strong> from large installations  </li>\n<li><strong>Documentation</strong> still evolving  </li>\n<li><strong>Tools</strong> and integrations limited, especially on the CMS side</li>\n</ul>\n<p>A cautious adoption is therefore recommended for critical projects.</p>\n<hr>\n<h3>3. Cache and State Management</h3>\n<p>Drupal has historically relied on a <strong>stateless model</strong> and an <strong>advanced caching strategy</strong>.</p>\n<p>FrankenPHP's persistent mode may introduce:</p>\n<ul>\n<li><strong>Side effects</strong> in service or user management  </li>\n<li><strong>Cache inconsistencies</strong> if application state is not properly managed  </li>\n</ul>\n<p>A <strong>solid understanding of Drupal internals</strong> is essential before going further.</p>\n<hr>\n<h2>Recommended Use Cases</h2>\n<p>FrankenPHP can be interesting for:</p>\n<ul>\n<li><strong>Development or testing environments</strong>  </li>\n<li><strong>Proof of Concept (PoC)</strong>  </li>\n<li><strong>Internal projects</strong> or those without high availability requirements  </li>\n<li><strong>PHP performance experiments</strong></li>\n</ul>\n<p>Ideal for exploring the next generation of PHP execution.</p>\n<hr>\n<h2>Cases to Avoid (For Now)</h2>\n<p>At this stage, it is better to avoid FrankenPHP for:</p>\n<ul>\n<li><strong>Critical production sites</strong>  </li>\n<li><strong>High availability environments</strong>  </li>\n<li><strong>Complex or heavily integrated architectures</strong></li>\n</ul>\n<p>Caution is advised until the ecosystem matures.</p>\n<hr>\n<h2>Conclusion</h2>\n<p>FrankenPHP represents a genuinely interesting evolution for the PHP ecosystem. Its simplified architecture, Docker integration, and performance potential make it worth watching. For Drupal specifically, it works best as a development or experimentation tool today. As community experience grows and compatibility improves, it may become a viable option for broader use. Stay curious, test it in a safe environment, and keep an eye on the evolving ecosystem.</p>","excerpt":"The PHP ecosystem is evolving rapidly, particularly in the area of execution and performance. New approaches are emerging to simplify deployment and accelerate…","frontmatter":{"date":"2026-03-18","metaDate":"2026-03-18","title":"Running Drupal with FrankenPHP: What You Need to Know","tags":["Drupal","PHP","FrankenPHP","Performance","Infrastructure","DevOps"],"path":"/running-drupal-with-frankenphp","cover":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAAHeV37IAAAACXBIWXMAAAPoAAAD6AG1e1JrAAADdElEQVQ4yyWU+0+bZRTH339DJ5e+LbQvbSn0foW266B0Kx1jrJFLhaFTZ1Qys0TiFMaAAuVWCki5ZoYN53Q68QI6ko1Ff9myZLofSPxjPp52Pzx58+Sc53nO+X6+51XeOPUFVYZJtMYCimoaZ3jmKTZnFuXNyhH0phyKK/M3sdSOhGtHCV95RvfQc/zJB3iavy6lfYWxMY/ONI3eModOkyOV+gkq1XH0sjGY56m1zqH4z6wT6tin+cKvNMV38cdWUJyJPTwSiCTv0nquiDskdVTob6Grm6XaOENt4xKVholScVnivY9wRO9gtK9Q27CCaimguTawBnbovPIXrtiePK5+ieX8n6SHT+j+/AVXx/4hOfgYV2SNjsvbJPt2cDfNouiME9RYcxhtOWz+AoG2Hal0hhpzFt+ZRVxNCzT6llBOVY1QobvFW9U3pZZJVOlVFWkMdXPl9my+IiUdFKt/k7a+Iyn6dX0G2zKqtYAteJuW9AGJzBEm+zKKO7hA6O0DvO0/cnbgCS3dR/jOPiTV/wOeUJFUZlfEH5cbXTkCmedEP3xF/7UD+odf4E/c5VzPKoPD39B6KS/8xlDqvXlCA0+xd/7G+fQW7T33aUrsMnj1e0leIhpfx+oUDAZLDq1hHqs7jzNSxBtdl6cm8UQWafBNEY5vomqT0nX1KAYBp5pzZRIV+nGqpXNjw6IQL1BVmy0rIrgm0JyrNLc/wB3dlYRlOZCjSpZOE4mseYmvYXZviCqrZWU0xxp1zqKwv0fv0DPa33lEvW8TvXm2ZLQRzPYczvAWnrb7uFrulRGbfdtYZJWQW7xbOKN7uOUC5+lvCST3iaUPOd31O02pfcIXHuIXlxnM0yh64ygO/yzB9C9EPjmhOn6M1v6EaM8Bne8fMXjjFYmBx0SFUbjrkMjFn0j1bouIy3S9t06qb4VkzyaecJ7SkIjBb1LTuIAvc0zrtf9IfPwv8aETOj895oPrP3Mj/5Lrsy+59NEfhBJbBETUzsx3JLrk+24BVzCPw1fAHVzC6ZsrVTiGxSE+FIwWTwF7dBN7sIA3vERQ0F3+7JBYxx00cY/VvYrFPk/i4jbxjg3pbAp3YIFgrIjZMS90yyMoM2TMiqAzrwmapmSmxNy2+fJe1abL5jc1CCDLjOg0JT+BOYz1OTkzXbZAKa7WTVOax/8BqZQYMC6EWMkAAAAASUVORK5CYII=","aspectRatio":1.5,"src":"/static/d96a80029cf894c7a0b328b11f4d2c83/4dd3f/frankenphp-drupal.png","srcSet":"/static/d96a80029cf894c7a0b328b11f4d2c83/4f634/frankenphp-drupal.png 480w,\n/static/d96a80029cf894c7a0b328b11f4d2c83/3dcd6/frankenphp-drupal.png 960w,\n/static/d96a80029cf894c7a0b328b11f4d2c83/4dd3f/frankenphp-drupal.png 1536w","srcWebp":"/static/d96a80029cf894c7a0b328b11f4d2c83/0bc1e/frankenphp-drupal.webp","srcSetWebp":"/static/d96a80029cf894c7a0b328b11f4d2c83/bc3bf/frankenphp-drupal.webp 480w,\n/static/d96a80029cf894c7a0b328b11f4d2c83/39337/frankenphp-drupal.webp 960w,\n/static/d96a80029cf894c7a0b328b11f4d2c83/0bc1e/frankenphp-drupal.webp 1536w","sizes":"(max-width: 1536px) 100vw, 1536px"},"resize":{"src":"/static/d96a80029cf894c7a0b328b11f4d2c83/d8210/frankenphp-drupal.png"}}}}}},"pageContext":{"isCreatedByStatefulCreatePages":false,"pathSlug":"/running-drupal-with-frankenphp","locale":"en","prev":{"fields":{"locale":"en"},"frontmatter":{"path":"/drupal-task-automation-imports-etl-crm","title":"Task Automation with Drupal: Imports, Lightweight ETL, and CRM Integrations","tags":["Drupal 10","Drupal","Automation","ETL","API","CRM","ERP"]}},"next":{"fields":{"locale":"en"},"frontmatter":{"path":"/drupal-ai-content-transformation","title":"Why AI Will Transform the Editorial Experience in Drupal","tags":["Drupal 11","IA","Contribution","AI"]}}}}}