ぷぎがぽぎ このページをアンテナに追加 RSSフィード

2011-05-25

[][] Silex で簡単メンテナンスモード

inspired by

流行に乗っかって Silex でやってみます。

メンテナンス画面のルーティングを追加

Silexでどうするのが簡単かと思ったのですが、ルーティングの評価が書いた順番に行われるのだから最初に書けばいいじゃないかということですね。

なので、以下のようにアプリケーションの先頭に書きます。

<?php
require_once __DIR__ .'/silex.phar';
$app = new Silex\Application();

$app->match('/{path}', function () {
   return <<<EOL
<!DOCTYPE HTML>
<html lang="ja-JP">
<body>
  <h1>メンテナンス中</h1>
</body>
</html>
EOL;
})->assert('path', '.*');

// 他のルーティング
$app->get('/', function () {...});

[追記2] getメソッドを使っていましたが、全てのリクエストメソッドを捕獲するためにmatchメソッドに変更しました。

これですべてのアクセスをメンテナンス画面にできます。うん。わかりやすい。

メンテナンスモードを解除するなら全コメントアウトすればいいですね。

なんだったらメンテナンス部分のルーティングを外部ファイルにすれば再利用性もアップ(笑

[追記]

エクステンションができました

ということで、@heavenshellさんがエクステンションを作ってくれました!!

Let's enjoy Silex life!!

tanakahisaterutanakahisateru 2011/05/27 16:40 どうも、Pinoco版の人ですw ちょっと気になったので質問です。postを受け付けるURLに直接postアクセスされたら、この場合どうなるんでしょう? Pinoco版だとpostでもステータス200でページが返されますが、本当はget以外のときは503が適当なのかもしれませんね。

brtRiverbrtRiver 2011/05/27 16:48 おっと。ご指摘の場合を考慮できていませんでした。
この場合だとGET以外はルーティングに引っかからないですね。すべてのリクエストメソッドに対応するためにmatchというのが用意されているのでそっちを使えば全て200でメンテナンス画面にできます。
というわけで修正します。

直接POSTされる場合が想定されているのであればステータスコードが200以外のほうが親切かもしれませんね。

tanakahisaterutanakahisateru 2011/05/27 20:35 ありがとうございます。なるほど、matchは気がきいてていろいろ便利そうですね。
Symfony系の開発者は、実は軽い物作るセンスの方が高いんじゃいかという気になります。

いま、簡単メンテナンスモードコンテストに、追加で、Node.js系のネタをエントリーしました。

brtRiverbrtRiver 2011/05/28 21:29 重装備なものを普段作っているだけにこだわりは人一倍なのかもしれませんw

heavenshellheavenshell 2011/05/28 22:36 蛇足ですがエクステンション版は match となっております。

brtRiverbrtRiver 2011/05/29 00:05 さすがです!

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


画像認証

2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2014 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2015 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |