15.2. Настройки
На работу PHP влияют следующие настройки. Некоторые из них меняют значение переменных настройки, другие задерживают выполнение сценария на указанный период времени.
boolean bcscale(integer scale)
Функция bcscale (листинг 15.1) задает по умолчанию масштаб для функций, выполняющих математические операции над числами произвольной точности. Масштабом является количество цифр после десятичной точки. Описание чисел произвольной точности см. в главе 13, "Математические функции".

| Листинг 15.1. Функция bcscale
<?php
//использовать 10 цифр bcscale(10);

clearstatcache()
Вызов C-функции stat (листинг 15.2) может занять много времени. Для улучшения производительности PHP кэширует результаты каждого вызова. Функции, работающие с результатами работы функции stat, работают с кэш-памятью. При частом изменении информации о файле может потребоваться очистка кэш-памяти команды stat. Среди функций, использующих информацию из кэшпамяти функции stat, можно назвать следующие: fileatime, filectime, filegroup, fileinode, filemtime, fileowner, fileperms, filesize, filetype, file_exists, is_dir, is_executable, is_file, is_link, is_readable, is_writable, lstat, stat. 

j Листинг 15.2. Функция clearstatcache_
<?php
//убедиться в том, что информация не кэшируется
clearstatcache();
//получить размер этого файла
print(filesize(_FILE_));
?>

define_syslog_variables()
Функция define_syslog_variables (листинг 15.3) эмулирует одноименную директиву настройки. Ее действие заключается в создании констант, которые используются в системном журнале, как переменных. Среди функций, взаимодействующих с системным журналом, можно назвать closelog, openlog и syslog.

j Листинг 15.3. Функция define_syslog_variables
<?php
define_syslog_variables();

boolean dl(string extension)
Функция dl предназначена для загрузки модуля динамического расширения. Эта функция возвращает значение FALSE, если модуль не может быть загружен. Путь к этим модулям задается в конфигурационном файле php.ini, поэтому достаточно задать только имя файла модуля. В операционной системе Unix они имеют расширение .so, а в Windows - расширение .dll.
Функция dl не работает как функция, когда PHP выполняется таким многопотоковым Web-сервером, как Apache 2. При использовании загружаемых расширений лучше всего их загружать в конфигурационном файле php.ini с помощью директивы extension.
integer error_reporting(integer level)
Функция error_reporting (листинг 15.4) задает уровень диагностирования ошибок и возвращает предыдущее значение. Аргумент level является битовым полем. Для того чтобы объединить различные типы сообщений об ошибках, используется оператор "побитового ИЛИ" (|). Эта функция отображает директиву с аналогичным названием. Коды уровней диагностирования см. в табл. 15.2.

j Листинг 15.4. Функция error_reporting_
<?php
//запуск с полной диагностикой, но без рассылки уведомлений error_reporting(E_ALL & ~E_NOTICE); //переменная пустая, но уведомления отсутствуют
print($empty_variable); 
//добавить к текущим установкам рассылку уведомления error_reporting(error_reporting() | E_NOTICE); // пустая переменная и сообщение с уведомлением
print($empty_variable);

string get_include_path()
Функция get_include_path возвращает текущие установки, заданные для директивы include_path directive.
boolean iconv_set_encoding(string type, string character_set)
Функция iconv_set_encoding предназначена для задания кодировки, используемой расширением iconv для одного из трех типов: input_encoding, internal_encoding или output_encoding. С помощью функции iconv_get_encoding можно получить текущую кодировку.