[{"data":1,"prerenderedAt":359},["ShallowReactive",2],{"navigation":3,"index":65},[4,25,50],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"\u002Fgetting-started","1.getting-started",[10,15,20],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Building FrankenPHP","\u002Fgetting-started\u002Fbuilding-frankenphp","1.getting-started\u002F3.building-frankenphp","i-lucide-hammer",{"title":26,"icon":6,"path":27,"stem":28,"children":29,"page":6},"Extensions","\u002Fextensions","2.extensions",[30,35,40,45],{"title":31,"path":32,"stem":33,"icon":34},"Queue","\u002Fextensions\u002Fqueue","2.extensions\u002F1.queue","i-lucide-list-checks",{"title":36,"path":37,"stem":38,"icon":39},"Scheduler","\u002Fextensions\u002Fscheduler","2.extensions\u002F2.scheduler","i-lucide-calendar-clock",{"title":41,"path":42,"stem":43,"icon":44},"Pogo","\u002Fextensions\u002Fpogo","2.extensions\u002F3.pogo","i-lucide-split",{"title":46,"path":47,"stem":48,"icon":49},"WebSocket","\u002Fextensions\u002Fwebsocket","2.extensions\u002F4.websocket","i-lucide-radio",{"title":51,"icon":6,"path":52,"stem":53,"children":54,"page":6},"Reference","\u002Freference","3.reference",[55,60],{"title":56,"path":57,"stem":58,"icon":59},"Caddy Reference","\u002Freference\u002Fcaddy","3.reference\u002F1.caddy","i-lucide-settings-2",{"title":61,"path":62,"stem":63,"icon":64},"PHP API","\u002Freference\u002Fphp-api","3.reference\u002F2.php-api","i-lucide-file-code-2",{"id":66,"title":67,"body":68,"description":67,"extension":351,"meta":352,"navigation":151,"path":353,"seo":354,"stem":357,"__hash__":358},"landing\u002Findex.md","",{"type":69,"value":70,"toc":349},"minimark",[71,217,273,335,345],[72,73,77,83,95,100,120],"u-page-hero",{"className":74,"orientation":76},[75],"dark:bg-neutral-950","horizontal",[78,79,80],"template",{"v-slot:top":67},[81,82],"hero-background",{},[78,84,85],{"v-slot:title":67},[86,87,88,89],"p",{},"Pogo ",[90,91,94],"span",{"className":92},[93],"text-primary","FrankenPHP Plugins",[78,96,97],{"v-slot:description":67},[86,98,99],{},"Queue, scheduler, request-scoped parallel jobs, and WebSockets compiled directly into a FrankenPHP binary.",[78,101,102,110],{"v-slot:links":67},[103,104,107],"u-button",{"size":105,"to":12,"trailing-icon":106},"xl","i-lucide-arrow-right",[86,108,109],{},"Get started",[103,111,117],{"size":105,"to":112,"color":113,"icon":114,"target":115,"variant":116},"https:\u002F\u002Fgithub.com\u002Fy-l-g\u002Fpogo","neutral","i-simple-icons-github","_blank","outline",[86,118,119],{},"View Pogo",[121,122,125],"prose-pre",{"code":123,"filename":124},"{\n  frankenphp\n\n  pogo_queue {\n    backend redis {\n      url {$POGO_REDIS_URL}\n    }\n    worker public\u002Fqueue-worker.php\n  }\n\n  pogo_scheduler {\n    command php artisan schedule:run\n  }\n}\n","Caddyfile",[126,127,130],"pre",{"className":128,"code":123,"filename":124,"language":129,"meta":67,"style":67},"language-caddyfile shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","caddyfile",[131,132,133,140,146,153,159,165,171,177,183,189,194,200,206,211],"code",{"__ignoreMap":67},[90,134,137],{"class":135,"line":136},"line",1,[90,138,139],{},"{\n",[90,141,143],{"class":135,"line":142},2,[90,144,145],{},"  frankenphp\n",[90,147,149],{"class":135,"line":148},3,[90,150,152],{"emptyLinePlaceholder":151},true,"\n",[90,154,156],{"class":135,"line":155},4,[90,157,158],{},"  pogo_queue {\n",[90,160,162],{"class":135,"line":161},5,[90,163,164],{},"    backend redis {\n",[90,166,168],{"class":135,"line":167},6,[90,169,170],{},"      url {$POGO_REDIS_URL}\n",[90,172,174],{"class":135,"line":173},7,[90,175,176],{},"    }\n",[90,178,180],{"class":135,"line":179},8,[90,181,182],{},"    worker public\u002Fqueue-worker.php\n",[90,184,186],{"class":135,"line":185},9,[90,187,188],{},"  }\n",[90,190,192],{"class":135,"line":191},10,[90,193,152],{"emptyLinePlaceholder":151},[90,195,197],{"class":135,"line":196},11,[90,198,199],{},"  pogo_scheduler {\n",[90,201,203],{"class":135,"line":202},12,[90,204,205],{},"    command php artisan schedule:run\n",[90,207,209],{"class":135,"line":208},13,[90,210,188],{},[90,212,214],{"class":135,"line":213},14,[90,215,216],{},"}\n",[218,219,221,226],"u-page-section",{"className":220},[75],[78,222,223],{"v-slot:title":67},[86,224,225],{},"The extension set",[78,227,228,240,251,262],{"v-slot:features":67},[229,230,231,235],"u-page-feature",{"icon":34},[78,232,233],{"v-slot:title":67},[86,234,31],{},[78,236,237],{"v-slot:description":67},[86,238,239],{},"Redis Streams backed queue workers with Laravel and Symfony Messenger drivers.",[229,241,242,246],{"icon":39},[78,243,244],{"v-slot:title":67},[86,245,36],{},[78,247,248],{"v-slot:description":67},[86,249,250],{},"Embedded minute-aligned command runner for single-node and singleton deployments.",[229,252,253,257],{"icon":44},[78,254,255],{"v-slot:title":67},[86,256,41],{},[78,258,259],{"v-slot:description":67},[86,260,261],{},"Request-scoped parallel PHP jobs for fan-out and fan-in work.",[229,263,264,268],{"icon":49},[78,265,266],{"v-slot:title":67},[86,267,46],{},[78,269,270],{"v-slot:description":67},[86,271,272],{},"Pusher-compatible WebSocket handler and Laravel broadcaster.",[218,274,276,281],{"className":275},[75],[78,277,278],{"v-slot:title":67},[86,279,280],{},"Choose the right tool",[78,282,283,296,309,322],{"v-slot:features":67},[229,284,286,291],{"icon":285},"i-lucide-database",[78,287,288],{"v-slot:title":67},[86,289,290],{},"Durable work",[78,292,293],{"v-slot:description":67},[86,294,295],{},"Use Queue when work must survive the request and can be retried safely.",[229,297,299,304],{"icon":298},"i-lucide-clock",[78,300,301],{"v-slot:title":67},[86,302,303],{},"Scheduled work",[78,305,306],{"v-slot:description":67},[86,307,308],{},"Use Scheduler for simple cron-style triggering in single-node or singleton services.",[229,310,312,317],{"icon":311},"i-lucide-zap",[78,313,314],{"v-slot:title":67},[86,315,316],{},"Parallel request work",[78,318,319],{"v-slot:description":67},[86,320,321],{},"Use Pogo when independent work must finish before the response returns.",[229,323,325,330],{"icon":324},"i-lucide-radio-tower",[78,326,327],{"v-slot:title":67},[86,328,329],{},"Realtime events",[78,331,332],{"v-slot:description":67},[86,333,334],{},"Use WebSocket for Pusher-style channels and Laravel broadcasting.",[218,336,338],{"className":337},[75],[339,340],"u-page-c-t-a",{":links":341,"className":342,"description":343,"title":344},"[{\"label\":\"Build FrankenPHP\",\"to\":\"\u002Fgetting-started\u002Fbuilding-frankenphp\",\"trailingIcon\":\"i-lucide-arrow-right\"},{\"label\":\"PHP API\",\"to\":\"\u002Freference\u002Fphp-api\",\"variant\":\"subtle\",\"icon\":\"i-lucide-file-code-2\"}]",[75],"Compile the modules you need into FrankenPHP, then configure each extension with a small Caddy block.","Start with the shared build pattern",[346,347,348],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":67,"searchDepth":136,"depth":142,"links":350},[],"md",{},"\u002F",{"title":355,"description":356},"Pogo FrankenPHP Plugins","Documentation for Queue, Scheduler, Pogo, and WebSocket plugins for FrankenPHP.","index","nQuC9_5mzeMGTt0bpASTRipg3sDsL2HTEUkBDb7ixhA",1779723171004]