Форум → Программирование → PHP для идиотов → Расширения PHP → Есть ли callback для session_destroy?
Есть ли callback для session_destroy?
Страницы: ← Предыдущая страница →
-
28 ноября 2009 г. 14:31, спустя 1 час 21 минуту 57 секунд
в ГК можно поймать те которые отвалились по таймауту
точнее тока они там и будут потому что все остальные были корректно закрыты -
1 декабря 2009 г. 17:23, спустя 3 дня 2 часа 52 минуты
ты пробовал словить? или это в теории?
в ГК можно поймать те которые отвалились по таймауту
точнее тока они там и будут потому что все остальные были корректно закрытыhttps://smappi.org/ - платформа по созданию API на все случаи жизни -
-
1 декабря 2009 г. 17:55, спустя 8 минут 12 секунд
Абырвалг, ну можно повесить колбек и словить все мертвые сессии, а там уже на основании названий файлов их удалять и еще что-то делатьhttps://smappi.org/ - платформа по созданию API на все случаи жизни -
-
1 декабря 2009 г. 18:11, спустя 8 минут 31 секунду
Абырвалг, да, колбек запустится в момент когда сработает gc, а там уже сам разруливай померли они или нетhttps://smappi.org/ - платформа по созданию API на все случаи жизни -
1 декабря 2009 г. 18:32, спустя 20 минут 56 секунд
все это в теории, на практике не удивлюсь что опять: на винде рабоатет не так или тп, в линуксе глючит, в фри удаляет сначала а потом запускает и ко всему этому прибавляется вероятность того что вообще не сработает ничто … ебанный пых, вечно с ним такая хуйнСапожник без сапог -
1 декабря 2009 г. 18:35, спустя 2 минуты 53 секунды
смотри кейс
-сессия стартует
-сессия наполняется
-сессия лежит ничего не делает
…
-стартует ГК
-проверяет если последний апдейт был раньше чем NOW-TTL то удаляет сессию
-profit -
1 декабря 2009 г. 22:41, спустя 4 часа 5 минут 39 секунд
По этому поводу есть вопросы, которые снимаются простым экспериментом, но делать его меня ломает, как видимо и всех.
- как стартует ГК? когда, с чего?
- я повесил калбэк на уничтожение, мой скрипт сдох через 0,05 секунды, ГК запустился через тыщу миллионов лет, кого он будет запускать? -
1 декабря 2009 г. 23:15, спустя 34 минуты 45 секунд
1. Работая сегодня с gc, я сделал выводы, он запускается каждый раз при старте скрипта.
Однако, можно настроить gc_lifetime и gc_probability для контролирования поведения gc
2. То есть destroy? Или ты о чем?
>ГК запустился через тыщу миллионов лет, кого он будет запускать?
будет запускать то, что ты прописал как калбек и ему похую что ты там пытаешся делатьhttps://smappi.org/ - платформа по созданию API на все случаи жизни -
2 декабря 2009 г. 23:09, спустя 23 часа 53 минуты 41 секунду
adw0rd, привиди, пожалуйста, пример, я нихуя не понимаю в этой еботе. -
3 декабря 2009 г. 1:12, спустя 2 часа 3 минуты 13 секунд
завтра, на работе…https://smappi.org/ - платформа по созданию API на все случаи жизни -
3 декабря 2009 г. 16:49, спустя 15 часов 36 минут 54 секунды
У меня есть у каждого сателита логгер, который нужен для того, чтобы собирать логи и отдавать их центральному серверу.
class PanjoStatist
{
public static $logger = NULL;
public static function init()
{
if (self::$logger == NULL) {
self::$logger = new PanjoStatist;
}
}
private function __construct()
{
session_set_save_handler(
array($this, "open"),
array($this, "close"),
array($this, "read"),
array($this, "write"),
array($this, "destroy"),
array($this, "gc")
);
}
/**
* Добавление записи лога
* @return boolean true
*/
public function add()
{
// опущено
}
/**
* Сохранения в лог-файл
* @param string $session_id
* @param string $data serialized arrays
* @return boolean true
*/
public function save ($session_id, $data)
{
// сюда передается имя сессии и данные из файла сессий
// далее я криптую (RSA) тут данные сессии и записываю в файл лога
}
// куча кода опущено
/**
* Этот метод срабатывает когда запускается gc
*/
public function gc($maxlifetime)
{
global $sess_save_path;
$prefix = '/sess_';
// перебираю файлы сессий в каталоге, выбирают от туда данные у которых время жизни истекло и удаляю их
foreach (glob($sess_save_path.$prefix.'*') as $filename) {
if (filemtime($filename) + $maxlifetime < time()) {
$session_id = substr($filename, strlen($sess_save_path.$prefix));
$this->save($session_id, file_get_contents($filename));
unlink($filename);
}
}
return true;
}
}
Стартует все это дело у меня так:
if(Panjo::settings('PanjoStatist')) {
PanjoStatist::init();
}
session_name(Panjo::settings('session_name'));
session_set_cookie_params(Panjo::settings('session_timeout')); // ставим куку на 600 сек
ini_set('session.gc_maxlifetime', Panjo::settings('session_timeout')); // каждые 600 сек
ini_set('session.gc_probability', 100); // 100% gc сработает (в теории, а на практике замечал глюки)
// делитель, типа если gc_probability = 100, а gc_divisor = 2, то gc стартанет на 50%
// если gc_divisor = 3, то gc стартанет на 33% вероятности
ini_set('session.gc_divisor', 1);
session_start();Спустя 59 сек.Вот что я понял в результате тестовhttps://smappi.org/ - платформа по созданию API на все случаи жизни -
23 декабря 2009 г. 0:50, спустя 19 дней 8 часов
http://habrahabr.ru/blogs/php/78774/ вот еще примерhttps://smappi.org/ - платформа по созданию API на все случаи жизни
Страницы: ← Предыдущая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!