Функции Язык программирования PHP

set_file_buffer

(PHP 3>= 3.0.8, PHP 4 >= 4.0.1)

set_file_buffer - устанавливает буферизацию файла в данном указателе файла.

Описание

int set_file_buffer (int fp, int buffer)

Вывод с помощью fwrite() обычно буферизуется в 8K. Это означает, что, если есть два процесса, желающих записать в один поток вывода (в файл), каждый делает паузу после 8K данных, позволяя другому записать. set_file_buffer() устанавливает буферизацию для операций записи в данном указателе файла fp в buffer байт. Если buffer равен 0, операции записи разбуферизуются. Это гарантирует, что все записи с помощью fwrite() выполнятся до получения другими процессами разрешения на запись в этот поток вывода.

Функция возвращает 0 при успехе, или EOF, если запрос не может быть выполнен.

В примере показано, как использовать set_file_buffer() для создания небуферизованного потока.
Пример 1. set_file_buffer()
$fp=fopen($file, 
"w"); if($fp){ set_file_buffer($fp, 0); fputs($fp, $output); fclose($fp); }

См. также fopen(), fwrite().


Назад Оглавление Вперёд
rmdir Вверх stat

Повторение

Когда субпатэрн в скобках квантифицирован минимальным количеством повторений, которое больше 1, или имеет ограничение максимума, для откомпилированного патэрна требуется больше места, пропорционально размеру минимума или максимума.

Если патэрн начинается с .* или с .{0,} и установлена опция PCRE_DOTALL (эквивалентная Perl'овской /s), разрешая, таким образом совпадение . с символами новой строки, то патэрн неявно заякоривается, поскольку всё, что идёт следом, будет испытываться относительно каждой символьной позиции в строке-субъекте, поэтому после первой нет другой позиции для возобновления попыток найти полное совпадение.
PCRE рассматривает такой патэрн так, как если бы ему предшествовало \A. Когда известно, что строка-субъект не содержит символов новой строки, предпочтительнее установить PCRE_DOTALL, если патэрн начинается с  .*, чтобы получить эту оптимизацию, или, альтернативно, использовать ^ для явного обозначения заякоривания.

Когда захватывающий субпатэрн повторяется, захваченным значением является подстрока, которая совпадает с последней итерацией. Например, после того как

(tweedle[dume]{3}\s*)+

совпадает с "tweedledum tweedledee", значением захваченной подстроки будет "tweedledee". Однако, если имеются вложенные захватывающие субпатэрны, соответствующие захваченные значения могут быть установлены в предыдущих итерациях. Например, после того как

/(a|(b))+/

совпадёт с "aba", значением второй захваченной подстроки будет "b".