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("Ошибка: порожденный процесс не создан!^");
}
?>
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. Операционная система. Часть Двадцать Девятая.
28-12-2009
<< Предыдущая статья | Следующая статья >> |
PHP. Операционная система. Часть Двадцать Восьмая. | PHP. Операционная система. Часть Тридцатая. |