Сессии

Сессии позволяют реализовать единый механизм передачи данных между страницами сайта. Программная реализация имеется в библиотеке PHPLIB, но в РНР есть встроенная. Сессии работают по следующей схеме.

  • Пользователю, впервые посетившему сайт, присваивается уникальный идентификатор (идентификатор сессии). Этот идентификатор может быть сохранен в cookie (но не все браузеры их поддерживают) или в строке URL (тогда необходимо вносить значение идентификатора во все внутренние ссылки сайта, имеющиеся на каждой странице сайта).
  • Затем инициализируется массии, в котором будут храниться данные текущей сессии. Обычно данные сессии хранятся на сервере в файлах или базе данных.
  • В сценарии используются две основные функции: открытие сессии и внесение значения неременной в данные сессии.
  • При открытии сессии автоматически извлекаются ранее сохраненные переменные сессии.
  • При уничтожении сессии (обычно это делается автоматически, но прошествии времени устаревания) удаляются все се данные.

Внутренняя реализация сессий PIIP работает следующим образом. Если параметр конфигурации session.auto_start установлен (равен 1), то при запуске сценария сессия инициализируется автоматически (неявно вызывается функция session_start()). При этом проверяется существование идентификатора сессии и необходимость его создания.
Явно добавить переменную к данным сессии позволяет функция session_register().
Сохранение и восстановление переменных сессии определяется параметрами конфигурации track_vars (обычно он разрешен всегда) и register_globals.
Если параметр register_g"lobals разрешен, то переменные сессии автоматически преобразуются в глобальные и обратно (также их значения доступны в массиве $HTTP_SESSION_VARS).
<?php session_register
("count"): $count++: >>
Если параметр register_globals запрещен, то тогда переменные сессии сохраняются только в глобальном ассоциативном массиве $НТТР_ SESSIONJARS.
<?php session_register
("count");
$HTTP_SESSION_VARS
["count"l++: ?>
PHP может автоматически вносить идентификаторы сессий (SID) в строки локальных гиперссылок, если при компиляции был разрешен параметр —enable-trans-sid. Это бывает полезно, если браузер клиента не поддерживает cookie; иначе придется добавлять идентификаторы сессий в ссылки вручную.
<php? # <?=SID^>
- позволяет вывести идентификатор
сессии
# при интерпретации
заменяется на значение вида
# PHPSESSID=
-da07977e2f4cl52f973676c41d6bd9aa ?>
По умолчганию данные сессий сохраняются в файчах (в каталоге, указанном параметром конфигурации session.save path). Так заметно снижает быстродействие, можно использовать собственную функцию сохранения данных сессий (например, в БД) установив в качестве таковой с помощью функции session set save hand().
session_start
Инициализация данных сессии
bool session_start(void)
Создает массив данных сессии или сессии, переданный через cookie или в строке запроса, дарующая сессия уже существует) восстанавливает ранее сохраненные переменные сессии.
Функция всегда возвращает TRUE.
session_destroy
Уничтожение данных сессии
bool session_destroy(void);
session_ name
Определение имени сессии
string sessionjiame ([string name])
Возвращает имя текущей сессии, и если указан аргумент, то есть ее имя на указанное name.
Имя сессии является именем cookies, или например в строке запросом URL. Оно должно содержать цифровые символы. По умолчанию имя устанавливается параметром session.name , файле конфигурации. Если требуется измнить его в сценарии, это должно быть сделано до открытия сессии (вызова функций session_start() или session_register()).
<?php
Sprevious name = session_name
("WebsitelD"): echo "Ранее именем
сессии было $previous_name<p>"; ?>
session_module_name
Определение модуля работы с сессиями
string session_module_name ([string module])
Возвращает имя текущего модуля для работы с сессиями (обычно это встроенный в РНР модуль). Можно указать имя собственного модуля module, который должен использоваться вместо встроенного.
session_save_path
Определение каталога сохранения данных сессии string session_save_path ([string path])
По умолчанию РНР сохраняет данные сессий в файлах, в каталоге определенном конфигурацией. Функцией возвращается имя этого каталога, и если указан аргумент, то заданный ранее каталог изменяется на указанный.
session_ id
Определение значения идентификатора сессии string session_id ([string id])
Возвращает значение идентификатора текущей сессии; если указан аргумент, то заменяет его на указанное id (установить значение можно только до начала сессии).
Значение идентификатора также хранится в константе SID.
session_register
Добавление переменной сессии
bool session_register (mixed name [, mixed ...])
Возможно указание различного числа аргументов, содержащих имена переменных. Также можно указывать массив, содержащий имена переменных. Функция возвращает TRUE, если регистрация прошла успешно.
session_unregister
Удаление переменной сессии
bool session_unregister (string name)
Возвращается TRUE, если исключение переменной с именем name из данных сессии прошло успешно.
session_unset
Удаление всех переменных сессии
void session_unset(void);
Удаляет все данные текущей сессии.
session_ is_ registered
Проверка принадлежности переменной к текущей сессии
bool session_is_registered (string name)
Возвращает TRUE, если переменная с именем name принадлежит сессии.
session_get_cookie_params
Получение параметров cookie сессии
array session_get_cookie_pararas (void);
Возвращается массив, содержащий три элемента:

  • lifetime — время жизни cookie;
  • path — путь URL, для которого cookie действителен;
  • domain — домен, для которого cookie действителен.

session_ set_ cookie_ params
Установка параметров cookie сессии
void session_set_cookie_params (int lifetime [, string path [, string domain]]).
Параметры, которые устанавливаются этой функцией, будут действовать только на время исполнения сценария, в остальных случаях будут использоваться значения из параметров файла конфигурации php.ini.
session_decode
Декодирование данных сессии из строки
boo! session_decode (string data)
Эта функция используется для извлечения данных сессии, если строка сериалпзированных переменных была сохранена вручную.
session_encode
Кодирование данных сессии в строку
string session_encode(void)
Возвращает строку, содержащую сериализированные данные текущей сессии.
tession_set_save_handler
Установление пользовательских процедур работы с сессиями
void session_set_save_handler (string open, string close, string Aead, string write, string destroy, string gc)
Этой функцией можно установить функции, которые будут выполнять следующие действия: открытие сессии, закрытие, чтение и запись данных сессии, уничтожение устаревших данных, вычисление момента, когда следует удалять устаревшие данные. Имена соответствующих функций указываются в этом порядке, как аргументы данной функции. Для того чтобы можно было использовать пользовательские функции, следует установить для параметра session.save_ handler в файле конфигурации значение user.
Можно реализовать механизм сохранения данных сессий в базе данных. Следующий пример, демонстрирующий сохранение данных в файлах (примерно таким образом действует РНР), может быть лег- / ко преобразован для хранения данных в БД.
<?Php
// инициализация сессии
function open ($save_path. $sesston_name)
{ global $sess_save_path. $sess_session_name:
// здесь может выполняться подключение
к БД $sess_save_path = $save_path;
$sess_session_name •= $session_name: return(TRUE).
}
// закрытие сессии function close()
{ return(TRUE): }
// загрузка данных сессии 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 {
returnC"'). }
// сохранение данных сессии
function write ($id. $sess_data) {
global $sess_save_path.
$sess_session_name:
$sess_file = "$sess_save_path/sess_$id":
if ($fp = @fopen($sess_file. "w"))
{ return (fwnte($fp, $sess_data));
} else { return(FALSE): }
} // уничтожение устаревших данных
сессии function destroy (Sid) {
global $sess_save_path.
$sess_session_name:
$sess_file = "$sess_save_path/sess_$id";
' return(@unlink($sess_file)); }
// здесь должны проверяться данные
сессии на истечение времени хранения
function gc (Smaxlifetime) {
return TRUE. }
session_set_save_handler
("open", "close", "read", "write",
"destroy", "gc"); session_start():
// далее следует обычная процедура
работы с сессиями ?>
session_cache_limiter
Определение ограничения кэширования
string session_cachejimiter ([string cachejimiter])
Когда посылаются заголовки HTTP, в них можно указать, разрешено ли кэширование полученных данных. В HTTP допустимы следующие значения: nocache (по умолчанию), private (относительное ограничение кэширования) и public (отсутствие ограничений). При запуске сценария ограничение кэширования устанавливается согласно значению параметра конфигурации session.cache_limiter.
Функция возвращает текущее ограничение кэширования, и если указан аргумент cachejli miter, то устанавливает новое (это необходимо делать до запуска сессии).
<?php
session_cache_himter( 'private');
session_start (): ?>
Загрузка файлов на сервер методом HTTP POST
PHP способен осуществлять загрузку на сервер файлов, посланных браузерами, использующими стандарт RFC1867 (таковыми являются Netscape Navigator 3 и старше, Microsoft Internet Explorer 3 с обновлением или более поздние браузеры Microsoft). Файлы могут быть как двоичными, так и текстовыми. При этом бывает полезно г воспользоваться процедурой аутентификации и функциями файловой системы.
Также РНР поддерживает загрузку методом PUT, используемую программами Netscape Composer и Amaya (см. ниже).
Для загрузки файлов методом POST необходимо передать браузеру следующую форму:
«FORM ENCTYPE="multipart/form-data"
ACTION="get.php" METHOD=POST>
<INPUT TYPE="hidden" name=
"MAX_FHE_SIZE" value="1000">
Отослать файл; <INPUT NAME=
"userfile" TYPE="file">
<INPUT TYPE="subirnt"
="Послать">
</FORM>
Вместо значения атрибута ACTION «get.php» необходимо указать имя PHP-сценария, который будет принимать файл. В скрытом поле MAX_FILE_SIZE указывается максимальный размер файла (в байтах), который может быть послан, но он не может быть больше, чем определено в параметре конфигурации upload_max_filesize. При отображении данной формы браузер автоматически добавляет кнопку «Обзор...», при нажатии на которую появляется стандартное окно выбора файлов.
Сценарий, который получает файл, может использовать глобальный массив $HTTP_POST_FILES для получения информации о том, что за файл был загружен. Обычно этот массив имеет следующую структуру:
Array (
[userfile] => Array ( [name] ->
jshtm.zip [type] =>
application/x-zip-compressed
[tmp_name] => E:/Tmp\phpAE.tmp
[size] => 21344 ) [userfnle?] =>
Array (
[name] => tsrm.txt
[type] => text/plain
[tmp_name] => E:/Tmp\phpAF.tmp
[size] => 5483 ) )
userfile — это имя поля формы, в которое вводилось имя передаваемого файла. (В форме может присутствовать несколько таких полей типа «file», если необходимо передавать несколько файлов одновременно.) Соответственно массив будет содержать столько же подмассивов, сколько полей передачи файлов присутствовало в форме.

  • $HTTP_POST_FILES['userfne']['name'] — имя файла на клиентской машине (без пути к нему).
  • JHTTP_POST_FILES['userfile']['type'] - MIME тип файла, автоматически определяемый браузером.
  • $HTTP_POST_FILES['userfi1e']['size'] — размер файла и байтах.
  • $HTTP_POST_FILES['userfile']['tmp_name'] — имя временного файла, в котором был сохранен загруженный на сервер файл.

По умолчанию, если каталог не установлен параметром конфигурации upload_tmp_dir, загруженные файлы сохраняются в системном каталоге для временных файлов (определяется системной переменной окружения TMPDIR). Обычно загруженные файлы перемещаются из временного каталога в какой-либо специально для этого предназначенный, это может быть сделано с помощью функции move_ uploaded_file().
<?php
foreach ($HTTP_POST_FILES as $v) {
// здесь обычно проводится проверка
допустимости if(move_uploaded_file
($v['tmp_name'J.
"Е/Tmp/UpLoaded.Files/".$v['name']))
echo "Файл r$v[name]' (размером
$v[snze] байт)", был успешно загружен
<ВР>\n", } ?>
При завершении сценария загруженный файл будет автоматически удален, если он не был перемещен или переименован.
Если вы желаете загружать несколько файлов одновременно, используйте синтаксис массивов в нолях формы загрузки подобно следующему:
<input name="userfile[]" type="file">
<br>
<input name="userfile[]" type="file">
<br>
<input name="userfile[]" type-"file">
<br>
Тогда структура массива $HTTP_POST_FILES будет иметь другую форму:
Array (
[userfilo] => Array ( [name] =>
Array [0 - ...] [type] => Array
[0 - ..] [tmpjiame] => Array [0 - ... ]
[size] > Array [0 - . ] ))
В этом случае тип первого загруженного файла будет находиться в элементе $HTTP_POST_FILES["userfile"]["type"][0], а размер второго в $HnP_POST_FILES["userfile"]["size"][l].
Загрузка методом PUT
PHP также поддерживает загрузку HTTP PUT, используемую такими устаревшими приложениями, как Netscape Composer. Этот метод работает намного проще, в теле заголовка запроса HTTP передается строка:
PUT /path/filename html HTTP/1.1
Строка указывает, что сервер должен сохранить последующую часть запроса как файл под именем filename.html в каталоге web-сервера /path/. Едва ли такое решение является удачным — позволять любому клиенту сохранять произвольные файлы на сервере. Поэтому в конфигурации web-сервера следует указать, что запросы этого типа должен обрабатывать определенный сценарий. В сервере Apache для этого необходимо добавить директиву Script в его файл конфигурации. Обычно такая директива вносится в блок <Directory>, иногда — в блок <Virtualhost>. Например, в таком виде:
Script PUT /put.php
Эта директива указывает серверу, что все получаемые запросы типа PUT (соответствующие контексту, то есть адресованные определенному каталогу или виртуальному хосту) должны передаваться сценарию put.php (расположенному в корневом каталоге web-сервера). Внутри файла put.php можно указать следующую строку:
<?php copy
($PHPjmjILFNAME.IDOCUMENT_ROOT.
$REQUEST_URI); ?>
Тогда все загружаемые файлы будут копироваться в указанную в запросе директорию. Необходимо, конечно, предварительно проводить ряд проверок на допустимость подобной операции. Полученный файл сохраняется во временном файле, имя которого заносится в переменную SPHP_PUT_FILENAME. Адрес, по которому запрашивался файл, сохраняется в переменной $REQUEST_URI (для Apache). Так же как и для файлов POST, полученный файл удаляется по завершении, если он не был скопирован или перемещен.
Запуск внешних приложений
escapeshellarg
i Добавление кавычек в строку аргументов команды ОС
string escapeshellarg (string arg)
Возвращается строку arg, в которую добавляются одинарные кавычки (вокру! самой строки и вокруг каждой одинарной кавычки), что позволяет передавать аргументы запуска командам операционной системы, если необходимо передать одиночный параметр, содержащий пробелы или другие символы разделители. Это бывает полезно для систем Unix при использовании функций exec(), system().
system('ls " .EscapeShel lArg($dir))
См. также: ехес(), popen(), system() и «оператор запуска внешних программ».
escapeshellcmd
Цитирование метасимволов командной строки
string escapeshellcmd (string command)
Функция возвращает строку command, в которую добавлены цитирующие слеши, это может быть использовано при передаче аргументов командам операционной системы. Также это может быть использовано как средство, предотвращающее запуск произвольных команд пользователем (если им вводятся аргументы запуска).
$е - EscapeShellCmd($usennput).
systemC'echo $e"); // в $е возможно
присутствие пробелов
$f = EscapeShellCmd($filename):
systemt"touch \"/tmp/$f\": Is -1 \"/tmp/$f\""):
См. также: escapeshellarg(), exec(), popen(), system() и «оператор запуска внешних программ».
exec
Запуск внешней программы
string exec (string command [, string array [, int return_var]])
Функция скрыто от пользователя запускает команду операционной системы (оболочки) command. Она возвращает последнюю строку, которую вывела команда command. Если необходимо распечатать все, что вывела команда, используйте функцию PassThru().
Если указан аргумент array, то в нем будет возвращена каждая строка, которая была выведена командой. Если в этом массиве уже присутствуют элементы, то строки будут добавляться в его конец (для очистки массива можно использовать функцию unset ().
Если указан аргумент return_var, то в нем будет сохранен код завершения команды.
<? $se = "dir C:\\".
$sO = exec($se. $sa. $sr):
echo "При запуске команды '$se
последняя выведенная строка была:\n".
$sO. "\n Код возврата ($sr)
\nA это все что было выведено: ";
pnnt_r($sa); ?>
Если требуется запустить программу в фоновом режиме (на длительное время), то поток ее вывода должен быть перенаправлен в файл (или иной поток вывода); иначе по истечении допустимого времени исполнения сценария (ожидания завершения внешней программы) он будет принудительно завершен с ошибкой.
См. также: system(), PassThru(), popen(), EscapeShellCmd() и «оператор запуска внешних программ».
passthru
Запуск внешней программы с выводом
void passthru (string command [, int return_var])
Функция сходна с ЕхесО: она запускает команду операционной системы command и возвращает в переменной return_var код завершения соответствующей системной команды, но она также выводит все то, что выводится при запуске.
Эта команда может использоваться и в тех случаях, когда внешняя программа выводит двоичные данные; например, с помощью утилиты
pbmplus можно непосредственно отослать браузеру рисунок (предварительно следует отослать заголовок «content-type: image/gif»).
В отличие от функций ехес() и system() она не возвращает никакого значения.
См. также: ехес(), system(), popen(), EscapeShellCmd(), «оператор запуска внешних программ».

system
Запуск внешней программы с выводом
string system (string command [, int return_var])
Функция подобна PassThru(), но она возвращает последнюю строку, выведенную при запуске команды (или FALSE при ошибке). Кроме того, после этого запуска (если была включена буферизация вывода) выводится содержимое буфера.
См. также: ехес(), PassThru(), popent), EscapeShellCmd() и «оператор запуска внешних программ».
Поддержка СОМ для Windows
Эти функции доступны только для Windows версий интерпретатора РНР1,
Поскольку технология СОМ предназначена для реализации объектного интерфейса, то для работы с компонентами СОМ предпочтительнее использование объектного интерфейса, имеющегося в РНР (вместо непосредственного применения функций).
СОМ объект можно создать, вызвав конструктор СОМ с оператором new.
$xcl = new COM("fxcel.sheet");
Если необходимо создать удаленный компонент (DCOM), то во втором дополнительном аргументе можно указать адрес сервера, на котором он должен создаваться (для этого должен быть разрешен параметр конфигурации com.al"low_dcom = TRUE). Доступ к свойствам и методам компонента можно осуществлять гак:
$xcl->Applicat"ion->Visible = 1;
// показать окно
echo $xcl->Application->Version,
// вывести номер версии
$xcl->Worksheets->Add:
// добавить лист
Sell = $xcl->Activesheet->Cells(3.2):
// выбрать ячейку
$cll->Activate():
// выделить ее
$cll->Value * "АА",
// ввести значение
$cll->Font->Bold = True;
// выделить жирным шрифтом
com_ load
Создание новой ссылки на компонент СОМ
string com_load (string module name [, string server name])
Создает новый компонент COM (если он не был создан ранее) и возвращает ссылку на него. При ошибке возвращает FALSE.
com_invoke
Вызов метода объекта СОМ
mixed com_invoke (resource com_object, string functionjiame [, mixed function parameters. ...])
При необходимости параметры вызова метода functionjiame передаются в третьем и последующих аргументах. Функция возвращает значение, возвращаемое методом, или FALSE — в случае ошибки.
com_propget
Синоним функции comjjet
mixed com_propget (resource com_object, string property)
com_get
Получение значения свойства компонента COM
mixed com_get (resource com_object, string property)
Возвращает значение свойства property обьекта com_object или FALSE — в случае ошибки.
com_propput
Синоним функции com_set
void com_propput (resource com_object, string property, mixed value)
com_propset
Синоним функции com_set
void com_propset (resource com_object, string property, mixed value)
com_set
Присвоение значения свойству компонента COM
void com_set (resource com_object, string property, mixed value)
Присваивает значение value свойству property объекта com_object. Возвращает TRUE, если операция прошла успешно, или FALSE в случае ошибки.
Функции POSIX
Данная группа функций позволяет работать с реализацией интерфейса POSIX.1, соответствующей спецификации IEEE 1003.1. Так как разработка этого модуля еще не завершена, документация по многим функциям находится в стадии разработки.
posix_kill
Посылка процессу сигнала завершения
boo! posixjdll (int pid, int sig)
Возвращает TRUE при успешной посылке сигнала sig процессу с идентификатором pid или FALSE при ошибке.
См. также раздел kill(2) справочной системы man по системе POSIX относительно отрицательных значений идентификаторов процессов и специальных значений pid 0. pjd -In номера сигнала 0.
posix_getpid
Получение идентификатора текущего процесса
int posix_getpid (void )
posix_getppid
Получение идентификатора родительского процесса
int posix_getppid (void )
posix_getuid
Получение ID реального пользователя текущего процесса int posix_getuid (void )
См. также posix_getpwuid().

posix_geteuid
Получение ID эффективного пользователя текущего процесса
int posix_geteuid (void )
См. также posix_getpwuid().
posix_getgid
Получение ID группы реального пользователя текущего процесса int posix_getgid (void )
См. также posix_getgrgid().
posix_getegid
Получение ID группы эффективного пользователя текущего процесса
int posix_getegid (void )
См. также posix_getgrgid().
posix_setuid
Установка ID реального пользователя текущего процесса
bool posix_setuid (int uid)
Для выполнения этой функции необходимо иметь соответствующие привилегии (обычно root). Возвращается TRUE или FALSE — при ошибке.
См. также posix_setgid().
posix_setgid
Установка ID эффективного пользователя текущего процесса bool posix_setgid (int gid)
Для выполнения этой функции необходимо иметь соответствующие привилегии (обычно root). Возвращается TRUE или FALSE — при ошибке. Заметьте, обычно сперва вызывается posix_setgid(), а затем posTX_setuid().
posi_ getgroups
Получение набора группы текущего процесса array posix_getgroups (void )
Возвращает массив, содержании целочисленные групповые идентификаторы текущего процесса.
См. также posix_getgrgid().
posix_getlogin
Получение имени login
string posix_get"login (void )
Возвращает имя (login), от которого был запущен текущий процесс.
См. также posix_getpwnam().
posix_getpgrp
Получение группового идентификатора текущего процесса
int posix_getpgrp (void )
См. также документацию POSIX.1 и раздел getpgrp(2) справочной системы man.
Posix_setsid
Назначение текущего процесса лидером сессии
int posix_setsid (void )
Возвращает идентификатор сессии.
См. также документацию POSIX. 1 и раздел setsid(2) справочной сис-тшы man.
posix _setpgid
Установка идентификатора группы процесса int posix_setpgid (int pid, int pgid)
Присоединяет процесс pid к группе процессов pgid. При ошибке возвращает FALSE.
См. также документацию POSIX.1 и раздел sctsid(2) справочной системы man.
posix_getpgid
Получение идентификатора группы процесса
int posix_getpgid (int pid)
Это не функция POSIX, но она распространена в системах BSD и System V. Если она не поддерживается системой, то РНР всегда будет возвращать FALSE.
posix_getsid
Получение идентификатора sid процесса
int posix_getsid (int pid)
Если pid равен 0, то возвращается идентификатор sid текущего процесса.
Это не функция POSIX, но она распространена в системах BSD и System V. Если она не поддерживается системой, то РНР всегда будет возвращать FALSE.
posix_uname
Получение информации о системе
array posix_uname (void )
Возвращает массив, содержащий следующие элементы:

  • sysname — название операционной системы (например, Linux);
  • nodename — имя системы (например, valiant);
  • release — версию операционной системы (например, 2.2.10);
  • version — дату создания (например, #4 Tue Jul 20 17:01:36 MEST 1999);
  • machine — архитектуру системы (например, i586);
  • domainname — имя домена DNS (например, php.net);

domainname — это расширение GNU, не являющееся частью POSIX.1, поэтому этот элемент доступен только на системах GNU или при использовании библиотеки GNU libc. Posix предупреждает, что формат значений может значительно различаться в разных системах.
posix_times
Получение времени процесса
array posix_times (void )
Возвращает ассоциативный массив строк, содержащих информацию
об использовании ресурсов CPU текущим процессом:

  • ticks — число тиков часов, прошедших с момента загрузки;
  • titime — время, расходуемое пользовательской частью текущего процесса;
  • stime — время, расходуемое системной частью текущего процесса;
  • cutime — общее время, расходуемое пользовательской частью текущего процесса и его дочерними процессами;
  • cstime — общее время, расходуемое системной частью текущего процесса и его дочерними процессами.

posix_stermid
Получение имени терминала ;
string posix_ctermid (void )
posix_ ttyname
Определение устройства терминала string posix_ttyname (int fd)
posix_ isatty
Проверка, является ли дескриптор файла терминалом

bool posix_isatty (int fd)
posix_ getcwd
Выяснение пути текущего каталога string posix_getcwd (void )
posix_mkfifo
Создание специального файла fifo (named pipe)
bool posix_getcwd (string pathname, int mode)
posix_getgrnam
Получение информации о группе по имени
array posix_getgrnam (string name)
posix_getgrgid
Получение информации о группе по идентификатору
array posix_getgrgid (int gid)
posix_getpwnam
Получение информации о пользователе по имени
array posix_getpwnam (string username)
Возвращает ассоциативный массив, содержащий информацию о пользователе, имеющем строковое имя, указанное в аргументе username.
Возвращаемый массив содержит следующие элементы:

  • name — имя пользователя username;
  • passwd — пароль пользователя в зашифрованном виде (иногда «*»);
  • uid — числовой идентификатор пользователя;
  • gid — числовой идентификатор группы пользователя. См. также posix_getgrgid();
  • gecos — устаревшее значение, но формализованное POSIX, содержащее информацию finger для систем Honeywell. Содержит перечисление через запятую (полное имя пользователя и, не всегда, рабочий и домашний телефон);
  • dir — абсолютный путь домашнего каталога пользователя;
  • shell — путь к программной оболочке пользователя по умолчанию.

posix_getpwuid
Получение информации о пользователе по идентификатору
array posix_getpwuid (int uid)
Возвращает ассоциативный массив, содержащий информацию о пользователе, числовой идентификатор, указанный в аргументе uid.
Структура возвращаемого массива аналогична таковому в функции posix_getpwnam().
posix_getrlimit
Получение массива информации об ограничениях ресурсов системы
array posix_getrlimit (void )
Функции сервера Apache
apache_lookup_uri
Запрос URI и получение о нем информации
class apache_lookup_uri (string filename)
Выполняет специальный запрос URI, указанный в аргументе filename. Функция позволяет узнать, как бы поступил сервер, получив соответствующий запрос. Возвращается объект, имеющий следующие свойства:

  • status — код статуса исполнения HTTP-запроса;
  • the_request — полный текст HTTP-запроса;
  • statusjline — строка, комментирующая статус исполнения HTTP-запроса;
  • method — метод HTTP-запроса;
  • content_type — MIME-тип возвращаемого содержимого;
  • handler — обработчик запроса;
  • uri — транслированный путь;
  • filename — локальное имя файла, к которому выполнялся запрос;
  • path_info — относительный путь, по которому запрашивался файл;
  • args — дополнительные аргументы HTTP-запроса;
  • boundary — границы;
  • no_cache — было ли запрещено кэширование полученного содержимого;
  • no_loca!_copy_allowed — допустим ли запрос;
  • send_bodyct — было ли отослано содержимое ответа;
  • bytes_sent — размер отосланного содержимого;
  • byterange — границы пересылаемого сегмента данных;
  • clength_unparsed uri — нстранслированный путь HTTP запроса;
  • mtime — время обработки запроса;
  • request_time — время получения запроса в формате Unix timestamp.

Функция работает, только если РНР установлен как модуль Apache.
<? var_dump(apache_lookup_un("/")); ?>
Выводит следующую информацию:
object(stdClass)(16) { ["status"]=>
int(200) ["the_request"]=>
stnng(23) "GET /ap/ap.php HTTP/1.1"
["method"]=> stnng(3) "GET"
["conter,t_type"]=> stnng(20)
"httpci/urn x-di rectory" ["un"]=>
stnng(l) "/" L"filename"]=>string(43)
"e:/apache/htdocs" ["path_info"]=>
stnng(l) "/" ["no_cache"]=>int(0)
["no_local_copy"]=> int(l)
["allowed"]=> int(O)
["sent_boclyct"]=> int(O)
["bytes_sent"]=> int(O) ["byterange"]=>
int(O) ["clength"]=> int(O)
["unparsed_uri"]=> stnng(l) "/"
["request_time"]=> int(990724810)
}
apgche_note
Определение примечания запроса
string apachejiote (string notejiame [, string note_value])
функция получаст и (если указан аргумент note_value) устанавливает JIOBOC значение из внутренней таблицы заметок Apache.
getgllheaders
Обработка заголовков запроса HTTP
аггаy getallheaders (void)
Возвращает заголовки, посланные вместе с текущим запросом.
Заметьте: многие из переменных, которые можно получить данным способом, могут быть получены как стандартные переменные окружения CG1.
См. также phpinfo(). var (jump(getallheaders ()): Вьведет примерно следующее:
аггау(б) {
["Accept"]=> stnng(3) "*/*"
["Accept-Encoding"]=>
stnng(13) "gzip. deflate"
["Accept-Language"]=> string(2) "ru"
["Connection"]=> stnngil())
"Keep-Alive"
["Host"]=> string()) "locaihost"
r"iJser-Agent">> stnng(51)
"Mozilla/4.0 (compatible: MSIE
5.01; Windows NT 5 0)" }
В настоящее время функция работает, только если РНР установлен как модуль Apache.
virtual
Выполнение подзапроса Apache
int virtual (string filename)
Выпо.''"яет директиву SSI файлов <! -#include virtual ...-->, обрабатываемую модулем Apache modjndude. Это полезно для включения в текущий файл CGI сценариев или файлов .shtml. Если необходимо включить файл РНР, используйте директивы include() или require().
ascii2ebcdic
Преобразование строки ASCII в EBCDIC
int ascin2ebcdic (string ascii_str)
Функция доступна только в системах, поддерживающих EBCDIC (OS/390, BS2000). Возвращает строку ascii_str, конвертированную в двоичный формат EBCDIC.
См. также обратную функцию ebcdic2ascii().
ebcdic2ascii
Преобразование строки EBCDIC в ASCII
int ebcdic2ascii (string ebcdic_str)
Функция доступна только в системах, поддерживающих EBCDIC (OS/390, BS2000).
См. также обратную функцию ascii2ebcdic().
Клиентский модуль Satellite CORBA
Этот модуль используется для работы с удаленными объектами архитектуры CORBA. Добавьте в файл php.ini строку idl_directory=, в которой указан путь к файлам описания интерфейсов IDL.
OrbitObject
Класс доступа к объекту CORBA
new OrbitObject (string ior)
В аргументе ior указывается строка идентификатора удаленного объекта IOR (Interoperable Object Reference), обычно включающая его имя и адрес.
# Простой файл описания интерфейса
(IDL) объекта interface Mylnterface {
voTd Setlnfo (scnng info):
string Getlnfo():
attribute int value: }
<?php
$obj = new CrDitObject ($ior).
$obj->Set!nfo ("A 2GooD object"):
echo $obj->GetInto():
$obj->value = 42.
echo $obj->value: ?>
OrbitEnum
Класс перечисления CORBA
new OrbitEnum (string id)
В аргументе id указывается строка имени «перечисления», которая может представлять простое его имя (например, "МуЕпит") пли быть полным идентификатором депозитария (например, "IDL:MyEnum:1.0").
# Простой файл описания интерфейса
(IDL) перечислителя enum MyEnum {
a.b.c.d.e -N ) \ !*л <?
! Senum = new OrbitEnum ("MyEnum");
echo $enum->a./* выводит О */
echo $enurn->c;/* выводит 2 */
echo $enum->e;/* выводит 4 */ ?>
OrbitStruct
Класс структуры CORBA
new OrbitStruct (string id)
В аргументе id указывается строка имени структуры, которая может представлять простое ее имя (например, "MyStnict") или быть полным идентификатором депозитария (например, "IDL:MyStruct:1.0").
# Простой файл описания интерфейса
(IDL) структуры struct MyStruct (
short shortvalue: string stnngvalue. }:
interface Somelnterface {
void SetValues (MyStruct values);
MyStruct GetValuesO:
} <?php
$obj - new OrbitObject ($ior);
$inmal_values = new OrbitStruct
("IDL:MyStruct:1.0");
$imtial_values->shortvalue = 42.
$1n!t1al va1ues->str1ngvalue =
"HGTTG".
$obj->SetValues ($imtnal_values);
Svalues =• $obj->GetValues();
echo $values->shortvalue:
echo $values->stnngvalue: ?>
satellite_caught_exception
Проверка исключения прошлой функции bool satellite_caught_exception ()
Возвращает TRUE, если при выполнении предыдущей функции в никло исключение.
# Простой файл описания интерфейса
(IOL) exception OutOfCheeseError {
int parameter; }
interface Anotherlnterface {
void AskWhyO raises
(OutOfCheeseError): }
<?php $obj = new
OrbntObject ($тог);
$obj->Askwhy().
if (satellnte_caught_exception())
{ if ("IDL-.OutOfCheeseError
10" == satellite_exceptionjd())
{ Sexception =
satellite_exception_value();
echo $exception->parameter; )
} ?>
satellite_exception_id
Получение идентификатора депозитария последнего исключения
string satellite_exception_id ()
Возвращает строку идентификатора (например, "IDL:MyException:1.0".)
См. также sateTlite_caught exception().
satellite_exception_value
Получение структуры последнего исключения
OrbitStruct satellite_exception_value()
См. также sateTlite_cauglit_exception().
Разделяемая память
Данный набор функций позволяет РНР создавать, удалять, читать и записывать данные в разделяемые блоки памяти UNIX. С помощью разделяемой памяти можно осуществлять глобальный обмен данными между приложениями. В системах Windows эти функции не работают, так как там не поддерживается разделяемая память1. Для использования этих функций необходимо скомпилировать РНР с параметром — enable-shmop. В версиях РПР 4.0.3 и ниже эти функции имели префикс shm_.
<?php
' Sshmjd = shmop_open
(0xff3. "с". 0644. 100) if('$shmjd
) { echo "Couldn't create shared
memory segment\n": }
$shm_size = bhmop_size($shmjd):
echo "Был создан SHM Block
размером: ",$shm_size. "\n".
$shm_bytes_wntten = shmop_write
($shffl_i(J. "my shared memory block", 0);
if($shm_bytes_wntten =
strlenC'my shared memory block"))
{ echo "Невозможно записать
все данные\n". } $my_stnng =
shmop_read($shmjid. 0. $shm_size):
if(!$my_stnng) { echo "Невозможно
прочитать даннь:е\n". }
echo "Данные в блоке: ".
$my_stnng. "\n":
if(!shmop_delete(Ishm_1d))
{ echo "Невозможно
удалить блок памяти". }
shmop_close($shin_id): ?>
shmop_open
Создание или открытие блока разделяемой памяти
int shmop_open (int key, string flags, int mode, int size)
В аргументе key указывается системный идентификатор блока; во втором аргументе, flags, указывается вид операции:

  • "а" — открыть доступ к уже существующему блоку (IPC_EXCL);
  • "с" — создать новый блок (IPC_CREATE).

Если блок создастся, то в третьем и четвертом аргументах передаются соответственно: права доступа к нему (обычно в восьмеричном представлении) и размер в байтах. Если же блок открывается, то в третьем и четвертом аргументах следует передавать значение 0.
В случае успеха функция возвращает дескриптор блока, используе- | мый в последующих операциях с ним.
shmop_size
Получение размера блока разделяемой памяти
int shmop_size (int shmid)
Возвращает размер блока, указанного дескриптором shmid.
shmop_read
Чтение данных из блока разделяемой памяти
string shmop_read (int shmid, int start, nnt count)
Возвращает прочитанную строку данных размером count байтов, начиная со смещения start, из блока, указанного дескриптором shmid.
shmop_write
Запись данных в блок разделяемой памяти
int shmop_write (int shmid, string data, int offset)
Записывает строку данных data в блок, указанный дескриптором shmid, по относительному адресу (смещению от начала блока) offset.
shmop_delete
Удаление блока разделяемой памяти
int shmop_delete (int shmid)
В аргументе shmid указывается дескриптор блока.
В случае успеха возвращает 1, а при ошибке — 0.
shmop_close
Закрытие блока разделяемой памяти
int shmop_close (int shmid)
В аргументе shrald указывается дескриптор блока.
Семафоры
Данная группа функций позволяет использовать семафоры и разделяемую память (System V). Семафоры могут использоваться для реализации доступа к системным ресурсам в эксклюзивном режиме (или ограничивать число процессов, одновременно использующих один ресурс). Сами по себе семафоры не защищают от одновременного использования ресурса, а используются для синхронизации.
Операционные системы Unix имеют следующие ограничения:

  • SHMMAX — максимальный размер блока разделяемой памяти, обычно 131 072 байта;
  • SHMMIN — минимальный размер блока разделяемой памяти, обычно 1 байт;
  • SHMMNI — максимальное число блоков разделяемой памяти в системе, обычно 100;
  • SHMSEG — максимальное число блоков разделяемой памяти для одного процесса, обычно 6.

Эти функции не работают в Windows.
sem_get
Получение дескриптора семафора
int sem_get (int key [, int max_acquire [, int perm]])
Возвращает дескриптор семафора с идентификатором key или FALSE — при ошибке.
При отсутствии такого семафора он создается, и в аргументах тах_ acquire и perm можно задать: число процессов, которые могут заблокировать этот семафор (по умолчанию 1 — «никакой процесс, кроме данного»), и нрава доступа к нему (по умолчанию 0666).
См. также: sem_acquire() и sem_release().
sem_acquire
Блокировка семафора
int sem_acquire (int senMdentifier)
Возвращает TRUE или FALSE — при ошибке. Число процессов, которые одновременно могут заблокировать семафор, указывается при его создании (аргументом max_acquire), и если оно уже достигнуто, попытки блокировки отвергаются. После завершения процесса, если он не освобождает семафор, выдается предупреждение.
См. также: sera_get() и sem_release().
sem_release
Освобождение семафора
int sem_release (int sem_identifier)
Освобождает семафор, заблокированный ранее данным процессом. Возвращает TRUE или FALSE — при ошибке (с выдачей предупреждения). После освобождения семафора его снова можно заблокировать функцией sem_acqihre().
См. также: sera get() и sero_acquire().
shm_attach
Создание или открытие блока разделяемой памяти
int shm_attach (int key [, int memsize [, int perm]])
В аргументе key указывается системный идентификатор блока. В случае успеха функция возвращает дескриптор блока разделяемой памяти System V, используемый в последующих операциях с ним. Если такого блока не существует, то он создается, и тогда в аргументе memsize можно указать его размер в байтах. (Если значение не указывается, то создается блок размером 10 000 байт, размер по умолча-' нию можно также задать, добавив в файл конфигурации параметр sysvshm.initjnem=.) В аргументе perm можно указать права доступа (по умолчанию 0666).
Повторный вызов функции с тем же значением key создаст новый дескриптор на тот же блок (аргументы memsize и perm будут игнорироваться).
shm_detach
Закрытие блока разделяемой памяти
int shm_detach (int shm_identifier)
Данные блока shmjdentifier при закрытии сохраняются.
shm_remove
Удаление блока разделяемой памяти
int shm_remove (int shmjiclentifier)
Все данные блока shm_identifier уничтожаются.
shm_put_var
Добавление или обновление переменной в разделяемой памяти
int shm_put_var (int shm_identifier, int variable_key, mixed variable)
Присваивает значение PHP-переменной variable переменной в блоке разделяемой памяти (с дескриптором shm_identifier), имеющей идентификатор variable_key. Поддерживаются все типы переменных (double, int, string, array).
shm_get_var
Получение переменной из разделяемой памяти
mixed shm_get_var (int id, int variable_key)
Возвращает значение переменной variable_key.
shm_remove_var

Удаление переменной из разделяемой памяти int shm_remove_var (int id, int variable_key) Удаляет переменную variable_key и освобождает память.

 

 
На главную | Содержание | < Назад....Вперёд >
С вопросами и предложениями можно обращаться по nicivas@bk.ru. 2013 г. Яндекс.Метрика