Просмотр полной версии : Exec с параметром
Krist_ALL
08.08.2009, 20:50
Нужно запустить пхп скрипт отдельна чтоли. Думаю юзать exec ,но мне нада еще параметр передать скрипту. И чтоб скрипт в котором команда exec не ждал выполнения скрипта в параметрах.
Попробуй запускать через passthru, только вывод перенаправь в /dev/null
Krist_ALL
08.08.2009, 21:08
Каким образом я через эту команду передам параметры скрипту? Нее.Ченить другое.
А в чем проблема написать типа
passthru("ls -lia > /dev/null"); ?
Или там если параметры в плане $_GET переменной, то запускай типа
passthru("lynx --dump http://site.ru/script.php?.... > /dev/null");
Krist_ALL
08.08.2009, 21:17
Изврат дальше некуда!
Попроще какнибудь) нужно запустить скрипт ипередать ему парметр один и пусть он выполняется скока хочет. А основной скрипт дальше делает свое дела не дожидаясь когда выполнится скрипт который запустить нада.
file_get_contents('http://site.ru/script.php?.....');
Попроще какнибудь) нужно запустить скрипт ипередать ему парметр один и пусть он выполняется скока хочет. А основной скрипт дальше делает свое дела не дожидаясь когда выполнится скрипт который запустить нада.
Ну обратись через сокеты или курл с минимальным таймаутом...
Krist_ALL
08.08.2009, 21:23
Мне не нада ждать пока выполнится второй скрипт
Krist_ALL
08.08.2009, 22:39
Фаэр феникс, твой вариант у меня был как запасной... Я не понял,как запустить в unix and windows с аргументами? Пхп.Ехе -... Итд? А в юникс? И все же эт не оч то шо мне нада...Нада средствами пхп.
BlackSun
08.08.2009, 23:11
$query = “POST ” . $url_info[path] . ” HTTP/1.1\r\n”;
$query = $query . “Content-Type: text/xml\r\n”;
$query = $query . “Host: ” . $url_info[host] . “\r\n”;
$query = $query . “Content-length: ” . (strlen($request)) . “\r\n\r\n”;
$query = $query . $request;
// создаем сокет, переводим его
// в неблокирующий режим и запускаем
$errno = 0;
$error = “”;
$socket = fsockopen($url_info[host], $url_info[port], $errno, $error, 30);
stream_set_blocking($socket, 0);
fputs($socket, $query);
http://www.stableversion.com/node/3
Вставляешь в начало скрипта который надо вызывать из консоли
foreach ($argv as $params)
{
list($key, $value) = explode("=", $params);
$_GET[$key] = $value;
}
в итоге все параметры из $argv преобразуются в $_GET
вызываем так:
php file.php param1=value param2=value
по аналогии можно и под $_POST сделать ... и вобще под что угодно)
FireFenix
09.08.2009, 00:10
Фаэр феникс, твой вариант у меня был как запасной... Я не понял,как запустить в unix and windows с аргументами? Пхп.Ехе -... Итд? А в юникс? И все же эт не оч то шо мне нада...Нада средствами пхп.
А что никсы? Пхп же тотжий => запуск одинаковый
пример
index.php
<?php
system('php -f C:\shell.php +site http://google.ru +file C:\result.html');
?>
Ну пути для никсов будут другие только :)
shell.php
<?php
if ($argc == 3 || $argc == 5)
{
if ($argv[1] == '+site')
{
$site = $argv[2];
}
$content = file_get_contents($site);
if ($argc == 5)
{
if ($argv[3] == '+file')
{
$file = $argv[4];
if (strlen(trim($file)) > 0)
{
file_put_contents($file, $content);
echo('Сайт успешно записан!');
}
}
} else {
echo($content);
}
} else {
echo('Неверные параметры!');
}
?>
Krist_ALL
14.08.2009, 14:05
Новая проблема. Запускаю скрипт через систем пхп ./а/д.Пхп все норм,скрипт запускается. И он должен создать файл в той директории по идее в которой он находится, тоесть в а , а он создает файл в директории, в который находится скрипу с систем. Получается как инклуд...
Krist_ALL
14.08.2009, 14:57
Какие относительные.Ты не понял.
Есть файл а.Пхп
систем(./дир/б.Пхп)
б.Пхп находится в папке дир
фопен д.Тхт ...
Файл создается не в директории дир а втой в которой а.Пхп! Поидее если файл б.Пхп в папке дир,то он должен там и создать файл.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot