[{"data":1,"prerenderedAt":294},["ShallowReactive",2],{"navigation":3,"\u002Fgetting-started\u002Fintroduction":65,"\u002Fgetting-started\u002Fintroduction-surround":291},[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":11,"body":67,"description":284,"extension":285,"links":286,"meta":287,"navigation":288,"path":12,"seo":289,"stem":13,"__hash__":290},"docs\u002F1.getting-started\u002F1.introduction.md",{"type":68,"value":69,"toc":276},"minimark",[70,74,104,107,112,175,179,182,236,240],[71,72,73],"p",{},"Pogo is a small set of FrankenPHP plugins that move common application runtime services into the FrankenPHP binary:",[75,76,77,84,94,99],"ul",{},[78,79,80,83],"li",{},[81,82,31],"strong",{}," runs Laravel and Symfony jobs through a FrankenPHP-native worker loop backed by Redis Streams.",[78,85,86,88,89,93],{},[81,87,36],{}," triggers one configured command, such as ",[90,91,92],"code",{},"php artisan schedule:run",", on each wall-clock minute.",[78,95,96,98],{},[81,97,41],{}," runs request-scoped parallel PHP jobs in dedicated FrankenPHP worker pools.",[78,100,101,103],{},[81,102,46],{}," embeds a Pusher-compatible WebSocket server and Laravel broadcasting driver.",[71,105,106],{},"The goal is a simpler PHP deployment for small platforms, demos, single-binary applications, and controlled production workloads where the tradeoffs are understood.",[108,109,111],"h2",{"id":110},"what-these-plugins-replace","What these plugins replace",[113,114,115,131],"table",{},[116,117,118],"thead",{},[119,120,121,125,128],"tr",{},[122,123,124],"th",{},"Plugin",[122,126,127],{},"Common external service",[122,129,130],{},"Pogo replacement",[132,133,134,145,155,165],"tbody",{},[119,135,136,139,142],{},[137,138,31],"td",{},[137,140,141],{},"Supervisor plus Redis queue workers",[137,143,144],{},"FrankenPHP queue worker loop",[119,146,147,149,152],{},[137,148,36],{},[137,150,151],{},"Cron, systemd timer, scheduler sidecar",[137,153,154],{},"Embedded Caddy app with Go ticker",[119,156,157,159,162],{},[137,158,41],{},[137,160,161],{},"Ad hoc synchronous fan-out",[137,163,164],{},"Request-scoped worker pools",[119,166,167,169,172],{},[137,168,46],{},[137,170,171],{},"Pusher, Reverb, or Node.js WebSocket server",[137,173,174],{},"Embedded WebSocket handler",[108,176,178],{"id":177},"production-posture","Production posture",[71,180,181],{},"Each plugin has a different maturity and reliability model.",[113,183,184,196],{},[116,185,186],{},[119,187,188,190,193],{},[122,189,124],{},[122,191,192],{},"Current status",[122,194,195],{},"Main reliability note",[132,197,198,208,218,227],{},[119,199,200,202,205],{},[137,201,31],{},[137,203,204],{},"Production-oriented",[137,206,207],{},"Redis Streams, at-least-once delivery, idempotent handlers required.",[119,209,210,212,215],{},[137,211,36],{},[137,213,214],{},"Experimental",[137,216,217],{},"Local ticker only; use a singleton service or shared app locks when scaled.",[119,219,220,222,224],{},[137,221,41],{},[137,223,214],{},[137,225,226],{},"Jobs are tied to the active HTTP request and are not persisted.",[119,228,229,231,233],{},[137,230,46],{},[137,232,214],{},[137,234,235],{},"Pusher-compatible subset with at-most-once delivery.",[108,237,239],{"id":238},"recommended-reading-order","Recommended reading order",[241,242,243,250,259,265],"ol",{},[78,244,245,246,249],{},"Read ",[247,248,16],"a",{"href":17}," for prerequisites.",[78,251,245,252,254,255,258],{},[247,253,21],{"href":22}," for the shared ",[90,256,257],{},"xcaddy"," pattern.",[78,260,261,262,264],{},"Open the extension page you need under ",[247,263,26],{"href":32},".",[78,266,267,268,271,272,275],{},"Use ",[247,269,270],{"href":57},"Caddy reference"," and ",[247,273,274],{"href":62},"PHP API reference"," once you are wiring a real application.",{"title":277,"searchDepth":278,"depth":279,"links":280},"",1,2,[281,282,283],{"id":110,"depth":279,"text":111},{"id":177,"depth":279,"text":178},{"id":238,"depth":279,"text":239},"What the Pogo FrankenPHP plugins provide and when to use each one.","md",null,{},{"icon":14},{"title":11,"description":284},"mE1tQ65Jmi0WJJnFUlbRrM91tKv2Xf3rVJ28J4xXWww",[286,292],{"title":16,"path":17,"stem":18,"description":293,"icon":19,"children":-1},"Prerequisites and setup for using Pogo FrankenPHP plugins.",1779731237721]