Сборщик мусора для клиентов PHP

0

Я сделал классный класс обработчика сеансов, изучая, как работают сессии в php.

У меня нормальный:

открывать, закрывать, читать, писать, уничтожать и выполнять функции gc внутри этого класса.

Я передал класс обработчику (когда класс создан в имеет один параметр, который является соединением db):

$handler = new Session($testdb);
session_set_save_handler(
  array($handler,'open'),
  array($handler,'close'),
  array($handler,'read'),
  array($handler,'write'),
  array($handler,'destroy'),
  array($handler,'gc')
);
session_start();

Все функции внутри этого класса хорошо работали - передача данных назад и вперед в пользовательскую базу данных, как и планировалось, принять сбор мусора. функция gc, похоже, не хочет играть в мяч. Когда он называется вручную, он будет работать нормально, но php никогда не вызывает его.

кодовый блок функции gc:

  Public function gc($expire)
 { 
    $SessionInfo = new Delete($this->WebSite,array($expire),
    "DELETE FROM sessions
    WHERE DATE_ADD(LastAccessed, INTERVAL $expire SECOND) < NOW()
    ");
    echo '<H1>BIG LETTERS</H1>'; // HTML shout out if function is called //
    return true;
 }

Я знаю, что у каждого session_start() есть 1% -ый шанс, который вызван, но я скорректировал% шанса в файле php.ini, чтобы увеличить шансы на более 50% и несколько раз попытался это сделать. используемый. Тот факт, что функция работает нормально при ручном вызове и тот факт, что другие функции в классе работают так, как они должны... заставляет меня застрять... какие-нибудь идеи?

  • 0
    попробуйте вывести эту строку в некоторый файл журнала и проверить значения в нем
  • 0
    Извините, что вы имеете ввиду?
Показать ещё 3 комментария
Теги:
garbage-collection

1 ответ

0
Лучший ответ

Исправлена.

Было 2 проблемы:

1: В функции мой запрос должен был взять "?" в INTERVAL $ expire SECOND (так что INTERVAL? SECOND)... Я все еще не уверен, КАК это работало вообще, когда я заметил это. Класс использует инструкцию PDO, которая должна вызывать ошибку при вводе переменной... но yay это другое дело.

2: Файл php.ini показывал неверную вероятность вероятности сбора мусора... вероятно, вплоть до предыдущего редактирования с моей стороны. (ОСНОВНАЯ ПРИЧИНА)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню