Phristen
Новичок
Несколько вопросов по автономным скриптам
1) Как узнать, существует ли процесс с определённым PID? POSIX на хосте выключен. Парсинг возвращаемого значения "ps -u `whoami`" не предлагать
2) Есть ли способ запустить скрипт в бэкграунде без exec, system, и т.п.? Есть ли способ "перевести" скрипт в бэкграунд из самого скрипта?
3) Нормально ли это, что бесконечный foreground скрипт, даже с ignore_user_abort() и set_time_limit(0), прерывается через 10-15 минут после запуска (через браузер)?
4) При каких условиях может не выполняться register_shutdown_function (точнее, зарегестрированная функция)? Есть ли способ гарантированного выполнения определенных действий при окончании скрипта? А то у меня функция то выполняется, то нет (при обстоятельствах, описанных в вопросе №3).
5) Ну и самое главное. Постил в другой теме, там никто не ответил. При запуске exec ("php ..."), скрипт (который вызывает exec), начинает выполняться заново, до бесконечности. При этом, каждый раз создается новый процесс, и не имеет значения, что идёт после "php". Даже при exec("php -v") всё тоже самое
Например в скрипте есть две строки:
<?
echo "[start]\n";
system ("php -v");
?>
В браузер поступает следующее:
[start]
Content-type: text/html X-Powered-By: PHP/4.3.11 [start]
Content-type: text/html X-Powered-By: PHP/4.3.11 [start]
Content-type: text/html X-Powered-By: PHP/4.3.11 [start]
Content-type: text/html X-Powered-By: PHP/4.3.11 [start]
Content-type: text/html X-Powered-By: PHP/4.3.11 [start]
Content-type: text/html X-Powered-By: PHP/4.3.11 [start
... и т.д., пока сам на stop не нажму.
Другие команды работают нормально, один раз.
-~{}~ 08.01.07 00:13:
Ну что, никто не знает? Или я глупость какую-то спрашиваю?
Ладно, вот ещё один вопрос, хотя и по другой теме.
Как сделать функцию для прямой модификации многомерных массивов?
например, чтобы вызов arrayModif($array, "value", 1, 2, 3, 4) был эквивалентен выражению $array[1][2][3][4] = "value"?
Делаю так:
И как ни странно, работает, НО... Все сабмассивы превращаются в указатели к ним. Т.е., когда делаю var_dump, вместо "array" получается "&array". Что делать-то?
Это референсы в PHP такие кривые, или мои руки?
1) Как узнать, существует ли процесс с определённым PID? POSIX на хосте выключен. Парсинг возвращаемого значения "ps -u `whoami`" не предлагать

2) Есть ли способ запустить скрипт в бэкграунде без exec, system, и т.п.? Есть ли способ "перевести" скрипт в бэкграунд из самого скрипта?
3) Нормально ли это, что бесконечный foreground скрипт, даже с ignore_user_abort() и set_time_limit(0), прерывается через 10-15 минут после запуска (через браузер)?
4) При каких условиях может не выполняться register_shutdown_function (точнее, зарегестрированная функция)? Есть ли способ гарантированного выполнения определенных действий при окончании скрипта? А то у меня функция то выполняется, то нет (при обстоятельствах, описанных в вопросе №3).
5) Ну и самое главное. Постил в другой теме, там никто не ответил. При запуске exec ("php ..."), скрипт (который вызывает exec), начинает выполняться заново, до бесконечности. При этом, каждый раз создается новый процесс, и не имеет значения, что идёт после "php". Даже при exec("php -v") всё тоже самое

Например в скрипте есть две строки:
<?
echo "[start]\n";
system ("php -v");
?>
В браузер поступает следующее:
[start]
Content-type: text/html X-Powered-By: PHP/4.3.11 [start]
Content-type: text/html X-Powered-By: PHP/4.3.11 [start]
Content-type: text/html X-Powered-By: PHP/4.3.11 [start]
Content-type: text/html X-Powered-By: PHP/4.3.11 [start]
Content-type: text/html X-Powered-By: PHP/4.3.11 [start]
Content-type: text/html X-Powered-By: PHP/4.3.11 [start
... и т.д., пока сам на stop не нажму.
Другие команды работают нормально, один раз.
-~{}~ 08.01.07 00:13:
Ну что, никто не знает? Или я глупость какую-то спрашиваю?
Ладно, вот ещё один вопрос, хотя и по другой теме.
Как сделать функцию для прямой модификации многомерных массивов?
например, чтобы вызов arrayModif($array, "value", 1, 2, 3, 4) был эквивалентен выражению $array[1][2][3][4] = "value"?
Делаю так:
Код:
function arraySet (&$arr, $val) {
$cur = &$arr;
foreach (func_get_args() as $i => $arg)
if ($i > 1) $cur = &$cur[$arg];
$cur = $val;
}
Это референсы в PHP такие кривые, или мои руки?