Slide 1

Slide 1 text

Fukuoka.go# FrankenPHP Reboot . 9 1 8 0 1 6 4 2 1 3 2 @seike 0 2 1 Go .

Slide 2

Slide 2 text

- - 0 6 4 門 日 0 6 4 @seike 己 自 2 @seike AWS Community Builder Serverless Fusic - / / Fukuoka.php Fukuoka.go(921 ) Serverless Meetup Fukuoka

Slide 3

Slide 3 text

3 4 3 2 1 Agenda .FrankenPHP . . .

Slide 4

Slide 4 text

1 0 FrankenPHP

Slide 5

Slide 5 text

っEarly Hints HTTP っ っ っ HTTPS 行 3 3 自 2 2 HTTPS っHTTP/ HTTP/ HTTP/ HTTP/ 自 高 5 FrankenPHP 103

Slide 6

Slide 6 text

Symfony API Platform Laravel Sulu WordPress Drupal Joomla framework Caddyfile 方 6 FrankenPHP

Slide 7

Slide 7 text

2 0

Slide 8

Slide 8 text

C Apache module mod_php FastCGI Process Manager php-fpm C FrankenPHP Nginx Apache 大 一 行 PHP 言 8 PHP

Slide 9

Slide 9 text

3 0

Slide 10

Slide 10 text

frankenphp 行 見 Caddy 0 1 Caddy

Slide 11

Slide 11 text

っ HTTPS Let's Encrypt SSL/TLS ) ZeroSSL っHTTP/ HTTP/ HTTP/ HTTP/ っ っ っ Linux macOS 行 ・ 3 3 2 用 2 自 っ 1 自 1 Caddy(Go Windows

Slide 12

Slide 12 text

import "C" Caddy C frankenphp.go Cgo PHP import C PHP SAPI Server API Go -> PHP ⾒ SAPI frankenphp_server_context 用 行 frankenphp.c PHP(C) Go 2 1 frankenphp.go _cgo_export.h URI

Slide 13

Slide 13 text

Caddy(net/http) Request Context 用 Go -> 3 1 PHP Request NewRequestWithContext

Slide 14

Slide 14 text

documentRoot PHP spiritPath env Context Request.WithContext 4 1 NewRequestWithContext

Slide 15

Slide 15 text

Caddy(net/http) Request NewRequestWithContext Request Context NewRequestWithContext frankenphp.ServeHTTP(w, fr) 用 Go -> 5 生 1 frankenphp.ServeHTTP

Slide 16

Slide 16 text

import "C" 行 行 sync.WaitGroup shutdownWG.Add WaitGroup frankenphp.ServeHttp Context築 Request PHP PHP 6 1 frankenphp.go

Slide 17

Slide 17 text

FrankenPHP Apache nginx + php-fpm PHP Go Point Go PHP (php-src) C Request Context築 PHP PHP PHP 行 1 3 2 HTTP 言 Point 7 1 Point

Slide 18

Slide 18 text

Thank You We are Hiring ! https://recruit.fusic.co.jp/