Хочу сделать обработку сессия и хранение их средствами MySQL. Для этого начал читать мануал по PHP, дабы вообще понять, как это все делается. вот тут. Но как оказалось, пример недоработанный, либо я чего-то недопонимаю. Проблема намба уан: Когда файл типа sess_jsdhfjwayhfjashd уже создан и пуст, при вызове функции read() наблюдается большой выброс варнингов, и кстати, понятно почему: возвращаемое значение не должно быть пустым. Итого, заменил функцию Код (Text): function read($id) { global $sess_save_path, $sess_session_name; $sess_file = "$sess_save_path/sess_$id"; if ($fp = @fopen($sess_file, "r")) { $sess_data = fread($fp, filesize($sess_file)); return($sess_data); } else { return(""); // Must return "" here. } } своим кодом Код (Text): function read($id) { global $sess_save_path, $sess_session_name; $sess_file = "$sess_save_path/sess_$id"; if (($fp = @fopen($sess_file, "r"))&&(filesize($sess_file))) { $sess_data = fread($fp, filesize($sess_file)); return($sess_data); } else { return(""); // Must return "" here. } } Ладно, пускай с этим разобрался. Но поясните мне пожалуйста, господа, смысл каждого аргумента функции session_set_save_handler. PS: Про write, read я уже понял. Заранее благодарю за содержательные ответы.
все, что тебе для этого надо, это ID сессии. А в базу пиши все, что хочешь по этому ID. можно вообще от стандартных сессий отказаться и не парится на этот счет. а написаить свой сессии и рулить ими как вздумается потому, что сессия всего лишь уникальный идентификатор, по которому скрипт определяет какой клиент запрашивает скрипт.
я и хочу отказаться от стандартных сессий, хочу лишь понять как работает функция session_set_save_handler, не в примере, а вообще, в php. Точнее ее аргументы, кроме известных мне Ведь именно эта функция дает ID фактически и как-то регулирует данные у сессии.
Konstant_IN хочешь отказаться - откажись. тогда и функции стандартные не юзай, а напиши свои. а функция эта переопределяет функции, которые отвечают за работу сессии, при стандартных вызовах. там в примере все есть. что не понятно-то?
Вот ее описание bool session_set_save_handler ( string open, string close, string read, string write, string destroy, string gc ) Непонятно вот что: Что делает переопределяемая функция open, close.
Konstant_IN open - создание, открытие close - закрытие, но сам файл остаетя жить до следующего применения. destroy - уничтожение файла по истечении некоторого времени не активности пользователя. например php подчищает просроченные сессии осле 1000 заросов
Я отказался от стандартных сессий из-за того, что она блокирует параллельные обращения одного пользователя. Реализация собственных сессий на MySQL даёт существенный рост производительности скрипта (самописные сессии работают в 2 - 3 раза быстрее родных ПХП сессий).
ONK я то же давно работаю со своими сессиями и очень доволен, т.к. можно вытворять все, что угодно ...