Hatena::ブログ(Diary)

Heavens hell

2011-05-26

[] Silex でメンテナンス画面表示

Silex の 4 つめのエクステンション

Silex でメンテナンス画面を表示する。

heavenshell/php-silex-maintenance ? GitHub

元ネタはこれ。

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 ファイルで良いと思うけど。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/heavenshell/20110526/1306422601