これは私にとっても問題でした。1 秒間に数千のセッション ファイルを取得していました。
この理由は、Session コンポーネントが AppCOntroller にロードされており、数秒ごとにリモート サーバーからサイトの URL にヒットする多数の cron ジョブがあるためです。サーバー userAgent では Cookie が無効になっているため、cron が実行されるたびに新しいセッションを作成する必要がありました (Cookie が有効になっている通常の userAgent は同じセッション ファイルを使用します)。
これには 2 つの回避策があります。1 つは、Session コンポーネントを AppController から必要な特定のコントローラーに移動することです。もう 1 つは、私が選択した解決策ですが、実行される各 cron の後に、php コマンド session_destroy() を使用することです。さらに一歩進めるために、Cotroller/CronAppController.php を含むプラグイン Cron を作成しました。
/**
* class to extend if you want the session destroyed after an action has completed.
* Useful for limiting cake session file storage overload
*
*/
class CronAppController extends AppController {
/**
* set this to true in a controller action if you want the session destroyed
*/
public $cronAction = false;
function afterFilter(){
parent::afterFilter();
if($this->cronAction){
session_destroy();
}
}
}
次に、cron アクションを含むコントローラーを Cron.CronAppController で拡張し、アクションで $this->cronAction = true; を設定します。そして、あなたは行く準備ができています!