Включение файлов в документ
Иногда нам приходится часто
изменяемые элементы программы или самой страницы выносить в
отдельный файл, а потом его динамически включать в документ... Это
может быть список часто изменяемых переменных или, например, меню.
Включить эти файлы нам поможет функция include(). Она имеет
единственный аргумент, который должен являться путем к необходимому
(включаемому) документу.
Пример
Выносим меню нашего сайта в отдельный файл. Назовем
его \'menu.txt\' и разместим в той же папке, что и index.php, а вместо
кода меню вводим
<?
include (\"menu.txt\");
?>
Работает? Замечательно!
Проверка существования файла
Часто программам будет
необходимо проверить, существует ли необходимый файл. Для этого
придумана функция file_exists(). Функция возвращает true, если файл
существует и false, если нет.
Пример
<?
if (file_exists(\"file.txt\")) {
//...Дальнейшие
действия...
} else {
echo
(\"File.txt не существует!\");
}
?>
Создаем и удаляем файлы
Для создания файлов есть функция
touch().
Пример
<? touch(\"file.txt\");
?>
А
для удаления файлов предусмотрена функция unlink().
Пример
<? unlink(\"file.txt\");
?>
Чтение, запись и добавление в файл
Для открытия файла
существует функция fopen(). Ей передаются 2 аргумента. Первый —
путь к файлу, а второй — режим доступа. Режимов доступа есть 3.
Первый обозначается \"r\" — открывается файл исключительно для
чтения, но не для записи, второй \"w\" — запись файл (!!!при
записи вся информация в файле сотрется и новые данные будут записаны
в начало уже пустого файла!!!). Если же использовать режим
добавления в конец файла, обозначаемый буквой \"a\" данные будут
записываться в конец файла, а текущее содержимое
останется.
Лучше открытый файл присваивать переменной,
которая потом будет указателем на файл.
Примеры
Открытие файла для чтения
$file=fopen(\"file.txt\", \"r\")
открытие файла для записи
$file=fopen(\"file.txt\", \"w\")
открытия файла для добавления данных
в конец
$file=fopen(\"file.txt\", \"a\")
После работы с файлом его необходимо
закрыть, иначе все измененное процессом в файле не
сохранится:
fclose($file); //$file — указатель
на файл
Чтение строк из файла
Для чтения строк из файла существует
функция fgets(). У неё есть 2 аргумента. Первый — указатель на
файл, второй — максимальное количество символов, которое можно
прочитать до того, как встретится конец файла или строки (обычно это
\"1024\").
Если вы хотите прочитать весь файл и вывести его
содержимое в броузер, Вам понадобится функция feof($file), где
$file — указатель на файл. Она возвращает true при достижении
конца файла и false в противном случае.
Итак, чтобы прочитать
весь документ, пользуемся кодом:
<?
$file= fopen (\"file.txt\", \"r\");
while (!feof($file))
{
$text
= fgets
($file, 1024);
echo
($text)
}
?>
Если Вы хотите прочитать
определенное количесво символов пользуйтесь функцией fread().
Пример:
<?
$file= fopen (\"file.txt\", \"r\");
$text = fread($file, 25);
echo ($text);
?>
Для перемещения по файлу (а
точнее, смещения) предусмотрена функция fseek(указатель на файл,
количество символов, на которое нужно отступить от начала
файла).
fseek($file, 80);
Запись в файл
Для записи в файл пользуемся функциями
fwrite() или fputs(), которые ничем друг от друга не отличаются.
Пример:
fwrite ($file, \"Ваш текст\");
fputs ($file, \"Ваш текст\");
Конечно, надо сначала открыть
файл с соответствующим режимом доступа (\"w\" или \"a\").
Блокируем файл...
Теперь появляется вопрос. А что если
несколько процессов будут одновременно записывать данные в файл?
Да-да, плохо будет. Данные будут перемешаны в огромную кучу и
превратятся в обыкновенный информационный мусор, не поддающийся
расшифровке. К счастью, на этот случай существует блокировка файла.
Есть 2 вида блокировки — частичная и полная. Частичная
запрещает другим процессам писать в файл данные, но не запрещает
читать их, а полная запрещает и чтение, и запись.
За
блокировку отвечает функция flock(указатель на файл , вид
блокировки). Вид блокировки обозначается цифрой (1 — частичная,
2 — полная). Чтобы разблокировать файл пользуйесь функцией
flock, но вид блокировки поставьте \"3\".