Revision 265 (by ahitrov, 2013/01/15 16:27:33) Session table clean script
#!/usr/bin/perl

use strict;
use warnings "all";
use locale;

use FindBin;
BEGIN {
        require "$FindBin::RealBin/../lib/Modules.pm";
}

use Contenido::Globals;
use Contenido::Init;
use ErrorTee;
use PidFile;


# begin
Contenido::Init->init();

my $keeper_module = $state->project.'::Keeper';
$keeper = $keeper_module->new($state);

#PidFile->new($keeper, compat=>1);                # db-based locking (run only on one host)
#PidFile->new($keeper, compat=>1, per_host=>1);   # db-based locking (run on whole cluster)

my $session_lifetime;
for my $plugin ( split(/\s+/, $state->plugins) ) {
	my $class = $plugin.'::Apache';
	eval { $class->child_init(); };
	if ( $@ ) {
		$log->error("Не могу выполнить метод child_init плагина $plugin ($class) по причине '$@'");
	} elsif ( $plugin eq 'session' ) {
		$session_lifetime = $state->{session}->lifetime;
	}
}

############################################
# please use:
#     $state->{log_dir} for logging
#     $state->{tmp_dir} for temporary files
###########################################

print "Lifetime: $session_lifetime\n"                   if $DEBUG;
if ( $session_lifetime ) {
	my $DBH = $keeper->SQL;
	my $now = Contenido::DateTime->new;
	my $then = $now->clone->subtract( seconds => $session_lifetime );
	my $request = "DELETE FROM sessions WHERE dtime < ?";
	my $sth = $DBH->prepare($request);
	print $then->ymd('-').' '.$then->hms."\n"       if $DEBUG;
	$sth->execute( $then->ymd('-').' '.$then->hms );
	$sth->finish;
}

Небольшая справка по веткам

cnddist – контейнер, в котором хранятся все дистрибутивы всех библиотек и программных пакетов, которые использовались при построении различных версий Contenido. Если какой-то библиотеки в данном хранилище нет, инсталлятор сделает попытку "подтянуть" ее с веба (например, с CPAN). Если библиотека слишком старая, есть очень большая вероятность, что ее там уже нет. Поэтому мы храним весь хлам от всех сборок. Если какой-то дистрибутив вдруг отсутствует в cnddist - напишите нам, мы положим его туда.

koi8 – отмирающая ветка, чей код, выдача и все внутренние библиотеки заточены на кодировку KOI8-R. Вносятся только те дополнения, которые касаются внешнего вида и функционала админки, баги ядра, обязательные обновления портов и мелочи, которые легко скопипастить. В дальнейшем планируется полная остановка поддержки по данной ветке.

utf8 – актуальная ветка, заточенная под UTF-8.

Внутри каждой ветки: core – исходники ядра; install – скрипт установки инсталляции; plugins – плагины; samples – "готовые к употреблению" проекты, которые можно поставить, запустить и посмотреть, как они работают.