[{"data":1,"prerenderedAt":361},["ShallowReactive",2],{"navigation":3,"\u002Fgetting-started\u002Finstallation":65,"\u002Fgetting-started\u002Finstallation-surround":356},[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":16,"body":67,"description":349,"extension":350,"links":351,"meta":352,"navigation":353,"path":17,"seo":354,"stem":18,"__hash__":355},"docs\u002F1.getting-started\u002F2.installation.md",{"type":68,"value":69,"toc":342},"minimark",[70,75,101,113,117,123,149,152,164,168,171,227,234,238,241,287,290,294,297,316,319,338],[71,72,74],"h2",{"id":73},"requirements","Requirements",[76,77,78,82,85,92,95,98],"ul",{},[79,80,81],"li",{},"PHP with ZTS support compatible with FrankenPHP.",[79,83,84],{},"FrankenPHP and Caddy module build tooling.",[79,86,87,91],{},[88,89,90],"code",{},"xcaddy"," for compiling custom modules.",[79,93,94],{},"CGO enabled during builds.",[79,96,97],{},"Composer for PHP framework packages.",[79,99,100],{},"Redis for production queue deployments and optional WebSocket fanout.",[102,103,104,105,108,109,112],"p",{},"The current modules target recent FrankenPHP\u002FCaddy versions. The build examples use FrankenPHP ",[88,106,107],{},"v1.12.3"," and Caddy ",[88,110,111],{},"v2.11.3",".",[71,114,116],{"id":115},"install-build-tooling","Install build tooling",[102,118,119,120,122],{},"Install ",[88,121,90],{},":",[124,125,131],"pre",{"className":126,"code":127,"filename":128,"language":129,"meta":130,"style":130},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","go install github.com\u002Fcaddyserver\u002Fxcaddy\u002Fcmd\u002Fxcaddy@latest\n","Terminal","bash","",[88,132,133],{"__ignoreMap":130},[134,135,138,142,146],"span",{"class":136,"line":137},"line",1,[134,139,141],{"class":140},"sBMFI","go",[134,143,145],{"class":144},"sfazB"," install",[134,147,148],{"class":144}," github.com\u002Fcaddyserver\u002Fxcaddy\u002Fcmd\u002Fxcaddy@latest\n",[102,150,151],{},"Confirm it is available:",[124,153,155],{"className":126,"code":154,"filename":128,"language":129,"meta":130,"style":130},"xcaddy version\n",[88,156,157],{"__ignoreMap":130},[134,158,159,161],{"class":136,"line":137},[134,160,90],{"class":140},[134,162,163],{"class":144}," version\n",[71,165,167],{"id":166},"choose-plugins","Choose plugins",[102,169,170],{},"You can compile one plugin or all plugins into the same FrankenPHP binary.",[172,173,174,187],"table",{},[175,176,177],"thead",{},[178,179,180,184],"tr",{},[181,182,183],"th",{},"Plugin",[181,185,186],{},"Go module",[188,189,190,200,209,218],"tbody",{},[178,191,192,195],{},[193,194,31],"td",{},[193,196,197],{},[88,198,199],{},"github.com\u002Fy-l-g\u002Fqueue\u002Fmodule",[178,201,202,204],{},[193,203,36],{},[193,205,206],{},[88,207,208],{},"github.com\u002Fy-l-g\u002Fscheduler\u002Fmodule",[178,210,211,213],{},[193,212,41],{},[193,214,215],{},[88,216,217],{},"github.com\u002Fy-l-g\u002Fpogo\u002Fmodule",[178,219,220,222],{},[193,221,46],{},[193,223,224],{},[88,225,226],{},"github.com\u002Fy-l-g\u002Fwebsocket\u002Fmodule",[102,228,229,230,233],{},"Continue with ",[231,232,21],"a",{"href":22}," for complete build examples.",[71,235,237],{"id":236},"install-php-packages","Install PHP packages",[102,239,240],{},"Install only the packages your application needs:",[124,242,244],{"className":126,"code":243,"filename":128,"language":129,"meta":130,"style":130},"composer require pogo\u002Flaravel-queue\ncomposer require pogo\u002Fsymfony-queue\ncomposer require pogo\u002Fpogo\ncomposer require pogo\u002Fwebsocket\n",[88,245,246,257,267,277],{"__ignoreMap":130},[134,247,248,251,254],{"class":136,"line":137},[134,249,250],{"class":140},"composer",[134,252,253],{"class":144}," require",[134,255,256],{"class":144}," pogo\u002Flaravel-queue\n",[134,258,260,262,264],{"class":136,"line":259},2,[134,261,250],{"class":140},[134,263,253],{"class":144},[134,265,266],{"class":144}," pogo\u002Fsymfony-queue\n",[134,268,270,272,274],{"class":136,"line":269},3,[134,271,250],{"class":140},[134,273,253],{"class":144},[134,275,276],{"class":144}," pogo\u002Fpogo\n",[134,278,280,282,284],{"class":136,"line":279},4,[134,281,250],{"class":140},[134,283,253],{"class":144},[134,285,286],{"class":144}," pogo\u002Fwebsocket\n",[102,288,289],{},"The Composer packages do not compile native modules. They provide framework integration and helper interfaces for a FrankenPHP binary that already includes the matching plugin.",[71,291,293],{"id":292},"start-frankenphp","Start FrankenPHP",[102,295,296],{},"Run with your Caddyfile:",[124,298,300],{"className":126,"code":299,"filename":128,"language":129,"meta":130,"style":130},"frankenphp run --config Caddyfile\n",[88,301,302],{"__ignoreMap":130},[134,303,304,307,310,313],{"class":136,"line":137},[134,305,306],{"class":140},"frankenphp",[134,308,309],{"class":144}," run",[134,311,312],{"class":144}," --config",[134,314,315],{"class":144}," Caddyfile\n",[102,317,318],{},"Laravel Octane users can also pass a Caddyfile to FrankenPHP:",[124,320,322],{"className":126,"code":321,"filename":128,"language":129,"meta":130,"style":130},"php artisan octane:frankenphp --caddyfile=Caddyfile\n",[88,323,324],{"__ignoreMap":130},[134,325,326,329,332,335],{"class":136,"line":137},[134,327,328],{"class":140},"php",[134,330,331],{"class":144}," artisan",[134,333,334],{"class":144}," octane:frankenphp",[134,336,337],{"class":144}," --caddyfile=Caddyfile\n",[339,340,341],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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":130,"searchDepth":137,"depth":259,"links":343},[344,345,346,347,348],{"id":73,"depth":259,"text":74},{"id":115,"depth":259,"text":116},{"id":166,"depth":259,"text":167},{"id":236,"depth":259,"text":237},{"id":292,"depth":259,"text":293},"Prerequisites and setup for using Pogo FrankenPHP plugins.","md",null,{},{"icon":19},{"title":16,"description":349},"IU9CnAMK_avgSNrQ3drN6U1H5ek4IwONiEWL1_6TO1A",[357,359],{"title":11,"path":12,"stem":13,"description":358,"icon":14,"children":-1},"What the Pogo FrankenPHP plugins provide and when to use each one.",{"title":21,"path":22,"stem":23,"description":360,"icon":24,"children":-1},"Compile a FrankenPHP binary with one or more Pogo plugins.",1779731238168]