ТОП-10 популярных



Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...


Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

PHP. Операционная система. Часть Двадцать Девятая.


28-12-2009

string system(string command, integer return)
Функция system (листинг 9.98) ведет себя абсолютно идентично С-функции system. Эта функция выполняет команду, указанную в аргументе command, отсылает результат в браузер и возвращает последнюю строку вывода, сопровождающего выполнение команды. При указании необязательного аргумента return PHP заносит в него возвращаемое командой значение. Если вывод в браузер не требуется, воспользуйтесь функцией exec.
В аргументе command крайне опасно помещать пользовательскую информацию. Пользователи могут передавать значения в виде полей, позволяющих им выполнять свои собственные команды на вашем Web-сервере. Если необходимо выполнить команду, введенную пользователем, полученную информацию необходимо передавать через функцию escapeshellcmd.
Сравните эту функцию с функциями exec, passthru и shell_exec.

j Листинг 9.98. Функция system_
<?php
// list files in directory print("<pre>"); system("ls -l"); print("</pre>");

 ?> 
9.7. Управление процессами
Функции управления процессами для обработки сигналов работают с функциями ОС Unix. С сигналами можно работать с помощью программы CLI, входящей в состав PHP и работающей только на платформе Unix. Тема сигналов в этой книге в полной мере не освещается, но ей всегда уделяется внимание в любой книге, посвященной программированию в Unix.
integer pcntl_alarm(integer seconds)
Функция pcntl_alarm устанавливает сигнал SIGALRM после заданного количества секунд. ОС отменяет любой предыдущий сигнал и возвращает количество оставшихся до него секунд.
boolean pcntl_exec(string path, array arguments, array environment)
Функция pcntl_exec (листинг 9.99) выполняет программу. Необязательный массив arguments может содержать любое количество аргументов, передаваемых командной строке. Аргумент environment содержит ассоциативный массив с определениями переменных среды.

Листинг 9.99. Функция pcntl_exec

<?php
pcntl_exec('/bin/ls', array('-a'), array("COLUMNS"=>"40"));
?>

integer pcntl_fork()
Функция pcntl_fork (листинг 9.100) создает порожденный процесс. Она возвращает идентификатор порожденного процесса порождающему процессу. Порожденному процессу возвращается нулевое значение.

Листинг 9.100. Функция pcntlfork

<?php
//создать порожденный процесс $pid = pcntl_fork();
if($pid == 0)
{
//порожденный процесс print(microtime() . " Childn"); //имитация вычисления for($i=0; $i < 10; $i++)
{
$x = pow($i, $i+1);
print(microtime() . " Порожденный процесс работает на
$in");
}
exit(123);
}
elseif($pid > 0) 
{
//порождающий процесс print(microtime() . " Parentn"); //ожидание порожденного процесса pcntl_waitpid($pid, $status); if(pcntl_wifexited($status))
{
$retval = pcntl_wexitstatus($status); print(microtime() . " Порождающий процесс получает
$retvaln");
}
}
else
{
print("Ошибка: порожденный процесс не создан!^");
}
?>

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
PHP. Операционная система. Часть Двадцать Восьмая. PHP. Операционная система. Часть Тридцатая.