Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

Библиотека :: Компьютеры и Программирование :: Котеров Д. В. - Самоучитель PHP 4
<<-[Весь Текст]
Страница: из 287
 <<-
 
ю мы рассматривали выше. Ее обычно задействуют, если хотят 
определить, существует ли еще объект, на который указывает символическая ссылка 

в $linkname. Я предпочитаю пользоваться для этого вызовом stat(), т. к., по- 
моему, ее название несколько более "читабельно". 

Часть IV. Стандартные функции PHP 276 
Нужно добавить, что можно совершенно спокойно удалять символические ссылки, не 
опасаясь за содержимое основного файла. Это делается обычным способом — на- 
пример, вызовом unlink() или rmdir(). 
Жесткие ссылки 
И в конце этой главы я хочу рассмотреть еще один вид ссылок — жесткие ссылки. 
Оказывается, создание символической ссылки — не единственный способ задать для 
одного файла несколько имен. Главный недостаток символических ссылок, как вы, 
наверное, уже догадались, — существование основного имени файла, на которое все 

и ссылаются. Попробуйте удалить этот файл — и вся "паутина" ссылок, если 
таковая 
имелась, развалится на куски. Есть и другой недостаток: открытие файла, на 
который 
указывает ссылка, происходит несколько медленнее, т. к. системе нужно 
проанализи- 
ровать содержимое ссылки и установить связь с "настоящим" файлом. Особенно это 
чувствуется, если одна ссылка указывает на другую, та — на третью и т. д. 
уровней 
на 10. 
Жесткие ссылки позволяют вам иметь для одного файла несколько совершенно рав- 
ноправных имен, причем доступ по ним осуществляется одинаково быстро. При этом, 

если одно из таких имен будет удалено (например, при помощи unlink()), то сам 
файл удалится только в том случае, если данное имя было последним, и других 
имен 
у файла нет. Сравните с символическими ссылками, удаляя которые файл испортить 
нельзя. 
Зарегистрировать новое имя у файла (то есть создать для него жесткую ссылку) 
мож- 
но с помощью функции link(). Ее синтаксис полностью идентичен функции 
symlink(), да и работает она по тем же правилам, за исключением того, что 
создает 
не символическую, а жесткую ссылку. Фактически, вызов link() — это почти то же, 

что и rename(), только старое имя файла не удаляется, а остается. 
Напоминаю, работает это все только в Unix, но не в Windows. И почему только 
до таких вещей не додумались парни из Microsoft?.. 

Глава 18 
Запуск внешних 
программ 
Функции запуска внешних программ в PHP востребуются достаточно редко. Их "не- 
популярность" объясняется прежде всего тем, что при использовании PHP програм- 
мист получает в свое распоряжение почти все возможности, которые могут когда- 
либо понадобиться, в частности, почтовые функции, на которые приходится львиная 

доля вызовов внешних программ в других языках — например, в Perl. Тем не менее, 

в числе стандартных функций языка присутствует полный набор средств, предназна- 

ченных для запуска программ и утилит операционной системы. 
string system(string $command [,int& return_var]) 
Эта функция, как и ее аналог в Си, запускает внешнюю программу, имя которой пе- 

редано первым параметром, и выводит результат работы программы в выходной по- 
ток, т. е. в браузер. Последнее обстоятельство сильно ограничивает область 
примене- 
ния функции. 
Впрочем, задействуя функции перенаправления вывода, мы все-таки можем 
получить и обработать то, что выдала нам запущенная программа, но стоит ли 
игра свеч? Может быть, лучше воспользоваться более подходящими средст- 
вами? 
Если функции передан также второй параметр — переменная (именно переменная, а 
не константа!), то в нее помещается код возврата вызванного процесса. Ясно, что 
это 
требует от PHP ожидания завершения запущенной программы — так он и поступает в 
любом случае, даже если последний параметр не задан. 
Не нужно и говорить, что при помощи этой функции можно запускать только те 
команды, в которых вы абсолютно уверены. В частности, никогда не переда- 
вайте функции system() данные, пришедшие из браузера пользователя 
(предварительно не обработав их) — это может нанести серьезный урон ва- 
шему серверу, если злоумышленник 
 
<<-[Весь Текст]
Страница: из 287
 <<-