<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Worker Mode on Producthunt daily</title>
        <link>https://producthunt.programnotes.cn/en/tags/worker-mode/</link>
        <description>Recent content in Worker Mode on Producthunt daily</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Sat, 21 Jun 2025 15:27:20 +0800</lastBuildDate><atom:link href="https://producthunt.programnotes.cn/en/tags/worker-mode/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>frankenphp</title>
        <link>https://producthunt.programnotes.cn/en/p/frankenphp/</link>
        <pubDate>Sat, 21 Jun 2025 15:27:20 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/frankenphp/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1669330230237-a828c49281df?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTA0OTA4MDd8&amp;ixlib=rb-4.1.0" alt="Featured image of post frankenphp" /&gt;&lt;h1 id=&#34;phpfrankenphp&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/php/frankenphp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;php/frankenphp&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;frankenphp-modern-app-server-for-php&#34;&gt;FrankenPHP: Modern App Server for PHP
&lt;/h1&gt;&lt;h1 align=&#34;center&#34;&gt;&lt;a href=&#34;https://frankenphp.dev&#34;&gt;&lt;img src=&#34;frankenphp.png&#34; alt=&#34;FrankenPHP&#34; width=&#34;600&#34;&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;FrankenPHP is a modern application server for PHP built on top of the &lt;a class=&#34;link&#34; href=&#34;https://caddyserver.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Caddy&lt;/a&gt; web server.&lt;/p&gt;
&lt;p&gt;FrankenPHP gives superpowers to your PHP apps thanks to its stunning features: &lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/early-hints/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;em&gt;Early Hints&lt;/em&gt;&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/worker/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;worker mode&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/mercure/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;real-time capabilities&lt;/a&gt;, automatic HTTPS, HTTP/2, and HTTP/3 support&amp;hellip;&lt;/p&gt;
&lt;p&gt;FrankenPHP works with any PHP app and makes your Laravel and Symfony projects faster than ever thanks to their official integrations with the worker mode.&lt;/p&gt;
&lt;p&gt;FrankenPHP can also be used as a standalone Go library to embed PHP in any app using &lt;code&gt;net/http&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;Learn more&lt;/strong&gt; on &lt;em&gt;frankenphp.dev&lt;/em&gt;&lt;/a&gt; and in this slide deck:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://dunglas.dev/2022/10/frankenphp-the-modern-php-app-server-written-in-go/&#34;&gt;&lt;img src=&#34;https://dunglas.dev/wp-content/uploads/2022/10/frankenphp.png&#34; alt=&#34;Slides&#34; width=&#34;600&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;getting-started&#34;&gt;Getting Started
&lt;/h2&gt;&lt;h3 id=&#34;standalone-binary&#34;&gt;Standalone Binary
&lt;/h3&gt;&lt;p&gt;We provide static FrankenPHP binaries for Linux and macOS
containing &lt;a class=&#34;link&#34; href=&#34;https://www.php.net/releases/8.4/en.php&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PHP 8.4&lt;/a&gt; and most popular PHP extensions.&lt;/p&gt;
&lt;p&gt;On Windows, use &lt;a class=&#34;link&#34; href=&#34;https://learn.microsoft.com/windows/wsl/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;WSL&lt;/a&gt; to run FrankenPHP.&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/dunglas/frankenphp/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Download FrankenPHP&lt;/a&gt; or copy this line into your
terminal to automatically install the version appropriate for your platform:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;curl https://frankenphp.dev/install.sh | sh
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;mv frankenphp /usr/local/bin/
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To serve the content of the current directory, run:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;frankenphp php-server
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;You can also run command-line scripts with:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;frankenphp php-cli /path/to/your/script.php
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;docker&#34;&gt;Docker
&lt;/h3&gt;&lt;p&gt;Alternatively, &lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/docker/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Docker images&lt;/a&gt; are available:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;docker run -v .:/app/public \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    -p 80:80 -p 443:443 -p 443:443/udp \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    dunglas/frankenphp
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Go to &lt;code&gt;https://localhost&lt;/code&gt;, and enjoy!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!TIP]&lt;/p&gt;
&lt;p&gt;Do not attempt to use &lt;code&gt;https://127.0.0.1&lt;/code&gt;. Use &lt;code&gt;https://localhost&lt;/code&gt; and accept the self-signed certificate.
Use the &lt;a class=&#34;link&#34; href=&#34;docs/config.md#environment-variables&#34; &gt;&lt;code&gt;SERVER_NAME&lt;/code&gt; environment variable&lt;/a&gt; to change the domain to use.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;homebrew&#34;&gt;Homebrew
&lt;/h3&gt;&lt;p&gt;FrankenPHP is also available as a &lt;a class=&#34;link&#34; href=&#34;https://brew.sh&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Homebrew&lt;/a&gt; package for macOS and Linux.&lt;/p&gt;
&lt;p&gt;To install it:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;brew install dunglas/frankenphp/frankenphp
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To serve the content of the current directory, run:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;frankenphp php-server
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;docs&#34;&gt;Docs
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/classic/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Classic mode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/worker/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Worker mode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/early-hints/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Early Hints support (103 HTTP status code)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/mercure/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Real-time&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/x-sendfile/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Efficiently Serving Large Static Files&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/config/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Configuration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/docker/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Docker images&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/production/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Deploy in production&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/performance/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Performance optimization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/embed/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Create &lt;strong&gt;standalone&lt;/strong&gt;, self-executable PHP apps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/static/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Create static binaries&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/compile/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Compile from sources&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/metrics/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Monitoring FrankenPHP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/laravel/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Laravel integration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/known-issues/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Known issues&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/dunglas/frankenphp-demo&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Demo app (Symfony) and benchmarks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://pkg.go.dev/github.com/dunglas/frankenphp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Go library documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/contributing/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Contributing and debugging&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;examples-and-skeletons&#34;&gt;Examples and Skeletons
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/dunglas/symfony-docker&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Symfony&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://api-platform.com/docs/symfony&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;API Platform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/laravel/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Laravel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://sulu.io/blog/running-sulu-with-frankenphp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Sulu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/StephenMiracle/frankenwp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;WordPress&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/dunglas/frankenphp-drupal&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Drupal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/alexandreelise/frankenphp-joomla&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Joomla&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ochorocho/franken-typo3&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;TYPO3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ekino/frankenphp-magento2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Magento2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
