PDA

Просмотр полной версии : Exec с параметром


Krist_ALL
08.08.2009, 20:50
Нужно запустить пхп скрипт отдельна чтоли. Думаю юзать exec ,но мне нада еще параметр передать скрипту. И чтоб скрипт в котором команда exec не ждал выполнения скрипта в параметрах.

Kaimi
08.08.2009, 20:57
Попробуй запускать через passthru, только вывод перенаправь в /dev/null

Krist_ALL
08.08.2009, 21:08
Каким образом я через эту команду передам параметры скрипту? Нее.Ченить другое.

Kaimi
08.08.2009, 21:13
А в чем проблема написать типа

passthru("ls -lia > /dev/null"); ?

Или там если параметры в плане $_GET переменной, то запускай типа
passthru("lynx --dump http://site.ru/script.php?.... > /dev/null");

Krist_ALL
08.08.2009, 21:17
Изврат дальше некуда!
Попроще какнибудь) нужно запустить скрипт ипередать ему парметр один и пусть он выполняется скока хочет. А основной скрипт дальше делает свое дела не дожидаясь когда выполнится скрипт который запустить нада.

Sharky
08.08.2009, 21:20
file_get_contents('http://site.ru/script.php?.....');

Kaimi
08.08.2009, 21:22
Попроще какнибудь) нужно запустить скрипт ипередать ему парметр один и пусть он выполняется скока хочет. А основной скрипт дальше делает свое дела не дожидаясь когда выполнится скрипт который запустить нада.

Ну обратись через сокеты или курл с минимальным таймаутом...

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

Sharky
08.08.2009, 23:59
Вставляешь в начало скрипта который надо вызывать из консоли
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
Какие относительные.Ты не понял.
Есть файл а.Пхп
систем(./дир/б.Пхп)

б.Пхп находится в папке дир
фопен д.Тхт ...
Файл создается не в директории дир а втой в которой а.Пхп! Поидее если файл б.Пхп в папке дир,то он должен там и создать файл.