ТОП-10 популярных



Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...


Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

PHP. Браузер ввода-вывода. Часть Седьмая.


28-12-2009

session_set_cookie_params(integer lifetime, string path, string domain, bool secure)
Функция session_set_cookie_params устанавливает четыре параметра, ис­пользуемых для файлов cookie данного сеанса. Обязательно задавать только параметр lifetime.
session_set_save_handler(string open, string close, string read, string write, string destroy, string garbage)
Функция session_set_save_handler позволяет реализовать альтернативный метод обработки сеансов. Каждый аргумент представляет собой имя функции для обработки определенного аспекта процесса обработки сеанса (табл. 8.5). Это можно реализовать в виде автономных функций или методов класса. Выбрав последнее, вы, как и автор в листинге 8.8, будете передавать имя метода в виде двухэлементных массивов. Первый элемент должен ссылаться на объект или класс. Второй элемент содержит имя метода. При использовании статических методов передайте это имя классу. При использовании объекта передайте в первом элементе ссылку на объект, как показано ниже. 
Браузер ввода-вывода
Листинг 8.8. Дескриптор сохранения сеанса

<?php
class mySession {
//префикс, которым обозначаются все файлы сеанса var $mark;
//путь к каталогу, в котором хранятся файлы сеанса var $path;
//имя файла cookie сеанса var $name;
function mySession($mark='mySession_')
{
$this->mark = $mark;
}
function getFilePath($id)
{
return($this->path . '/' . $this->mark . $id);
}
function open($path, $name)
{
$this->path = $path; $this->name = $name; return(TRUE);
}
function close()
{
return(TRUE);
}
function read($id) 
{
if($fp = @fopen(getFilePath($id), "r"))
{
return(fread($fp,
filesize($this->getFilePath($id))));
}
else
{
return("");
}
}
function write($id, $data)
{
if($fp = @fopen($this->getFilePath($id), "w"))
{
return(fwrite($fp, $data));
}
else
{
return(FALSE);
}
}
function destroy($id)
{
return(@unlink($this->getFilePath($id)));
}
function garbage($lifetime)
{
$d = dir($this->path); while($f = $d->read())
{
//файл начинается с отметки, что он устарел if((strpos($f, $this->mark) == 0) AND
(time() > (fileatime($f) + $lifetime)))
{
unlink("$this->path/$f");
}
}
$d->close(); return(TRUE);
}
}
$s = new mySession(); session_set_save_handler( array($s, 'open'), array($s, 'close'), array($s, 'read'), array($s, 'write'), array($s, 'destroy'), array($s, 'garbage')
);
// запуск сеанса session_start();
// инициализировать набор переменных сеанса if(!isset($_SESSION['a']))

print(" Инициализация сеанса <br>"); $_SESSION['a'] = 'Session Var A'; $_SESSION['b'] = 123.45;
$_SESSION['c'] = 0;
}
// обновить счетчик доступа сеанса $_SESSION['c']++;
print("Счетчик доступа: " . $_SESSION['c'] . "<br>"); print("Архив сеанса: " . session_encode() . "<br>");

boolean session_start()
Функция session_start предназначена для активизации сеанса. Если сеанса не суще­ствует, он будет создан. Так как при этом должен отсылаться файл cookie, перед отправкой какого-либо текста в браузер необходимо воспользоваться функцией session_start. Однако можно обойтись и без этой функции и настроить PHP таким образом, чтобы он автоматически запускал сеансы по запросу. Для этого следует задать в конфигурационном файле php.ini директиву session.auto_start. После запуска сеанса содержимое массива _SESSION будет сохранено для пользователя сеанса.
boolean session_unregister(string name)
Функция session_unregister предназначена для удаления переменной из сеанса и не сохраняется вместе с сеансом по завершении работы сценария. Вместо того чтобы использовать эту функцию, можно удалить соответствующий элемент из массива _SESSION.
session_unset()
Функция session_unset удаляет все переменные сеанса из массива _SESSION. session_write_close()
Эта функция немедленно сохраняет дескриптор сеанса. Обычно PHP записывает переменные сеанса после того, как завершается вывод в браузер, что делает эту функцию ненужной. При наличии параллельных соединений, использующих тот же сеанс с фреймами HTML, можно повысить производительность, закрыв сеансы вручную.
В противном случае каждый запрос блокируется до тех пор, пока не будет снята бло­кировка сеанса. Визуально это будет видно по загрузке одного фрейма за раз.

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
PHP. Браузер ввода-вывода. Часть Шестая. PHP. Браузер ввода-вывода. Часть Восьмая.