セッションの開始はInitializerプロセッサで行われています。
できれば、セッションが必要ない場合は無効にしたいものです。
例えば、セッションが全く必要ないサービスの場合は、Sessionプロセッサをバスから外します。
config/Bus.php
<?php
class Config_Bus extends Sabel_Bus_Config
{
...
protected $processors = array(
"addon" => "Processor_Addon",
...
// "session" => "Processor_Session", <- 外す
...
"view" => "Processor_View"
);
...
}
条件によってセッションの有効、無効を切り替えたい時はInitializerプロセッサを変更します。
if (!is_cli() && ($session = $bus->get("session")) !== null) {
// if文を追加(manageモジュールの時のみセッションを有効)
if ($bus->get("destination")->getModule() === "manage") {
$session->start();
l("START SESSION: " . $session->getName() . "=" . $session->getId());
}
}
クローラーによるアクセス時も無効にした方がいいかもしれません。URLにセッションIDが付いてしまうからです。
if (!is_cli() && ($session = $bus->get("session")) !== null) {
if (!is_crawler()) { // is_crawler()関数があるとして
$session->start();
l("START SESSION: " . $session->getName() . "=" . $session->getId());
}
}