Язык скриптования сайтов Parser 3

Hashfileclass


Класс hashfile [3.1.2]


Класс предназначен для работы с хешами, хранящимися на диске. В отличие от класса hash объекты данного класса считаются всегда определенным (def) и не имеют числового значения.

Если класс hash хранит свои данные в оперативной памяти, hashfile хранит их на диске, причем можно отдельно задавать время хранения каждой пары ключ-значение.

Замечание: в настоящий момент для хранения одного hashfile используются два файла: .dir и .pag.

Чтение и запись данных происходит очень быстро - идет работа только с необходимыми фрагментами файлов данных.

На простых задачах hashfile работает значительно быстрее баз данных.



Замечание: в один момент времени с файл может изменяться только одним скриптом, остальные ждут окончания его работы.

Пример

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

Можно поместить информацию в hashfile, ассоциировав ее со случайной строкой - идентификатором «сеанса общения с посетителем». Идентификатор сеанса общения можно поместить в cookie, данные теперь хранятся на сервере, не видны посетителю и не могут быть им подделаны.

# создаем/открываем файл с информацией

$sessions[^hashfile::open[/sessions]]

^if(!def $cookie:sid){

    $cookie:sid[^math:uuid[]]

}

# после этого…

$information_string[произвольное значение]

# …так запоминаем произвольную $information_string под ключом sid на 2 дня

$sid[$cookie:sid]

$sessions.$sid[$.value[$information_string] $.expires(2)]

# …а так можем считать сохраненное ранее значение

# если с момента сохранения прошло меньше 2х дней

$sid[$cookie:sid]

$information_string[$sessions.$sid]


Copyright © 1997?2004 Art. Lebedev Studio | http://www.artlebedev.ru Дата обновления: 31.03.2004



Содержание раздела