Silex でメンテナンス画面表示
Silex の 4 つめのエクステンション。
Silex でメンテナンス画面を表示する。
GitHub - heavenshell/php-silex-maintenance: Show maintenance to client.
元ネタはこれ。
Silex で簡単メンテナンスモード - ぷぎがぽぎ
経緯
$app->before() でフックできたけど、Response を return としてもディスパッチされてしまうので、素直に id:brtRiver さんのを移植した。
<?php require_once 'silex.phar'; require_once dirname(__DIR__) . '/src/MaintenanceExtension.php'; $app = new Silex\Application(); $app->register(new \MaintenanceExtension(), array( 'maintenance.lock' => __DIR__ . '/maintenance', 'maintenance.file' => __DIR__ . '/maintenance.html', )); $app->get('/', function () use ($app) { return 'index'; }); $app->run();
'maintenance.lock' というキーに設定したファイルを設置すると、作動する仕組み。
この場合 カレントディレクトリに maintenance というファイルを設置する。
ファイルが存在しない場合、メンテナンス画面は表示しない。
デプロイツールとかで、デプロイする前に maintenance のファイルを置き、その後デプロイ、デプロイ完了後に削除というフローを想定している。
一応 Twig にも対応している。
<?php $app = new Silex\Application(); $app->register(new Silex\Extension\TwigExtension(), array( 'twig.path' => __DIR__ . '/views', 'twig.class_path' => '/Path/To/Twig' )); $app->register(new \MaintenanceExtension(), array( 'maintenance.lock' => __DIR__ . '/maintenance', 'maintenance.file' => 'maintenance.twig', ));
TwigExtension を使用し、拡張子が twig の場合 /views/maintenance.twig を探し表示する。
※メンテ画面なんてテンプレートである必要はないから、普通に HTML ファイルで良いと思うけど。