Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Можно ли функцией exec() или system() запускать скрипт, передавая ему параметр?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Можно ли функцией exec() или system() запускать скрипт, передавая ему параметр?
UFOlog
Отправлено: 03 Мая, 2007 - 16:03:49
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2007  


Помог: 0 раз(а)




Вопрос таков, можно ли функцией exec() или system() запускать скрипт, передавая ему параметр?

Мне нужно, чтобы из заглавного скрипта запускался дочерний скрипт в фоновом режиме. При запуске в дочерний скрипт должны передаваться значения переменных. Как такое реализовать?

exec("/usr/local/bin/php save.php?ddd=ip &"); - работает, но в save.php значение ddd не передается!!!

Помогите, плиз.
 
 Top
valenok
Отправлено: 03 Мая, 2007 - 17:04:51
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. $ddd = 'abc';
  3. require_once('script2.php');
  4.  
\n\n(Добавление)
В скрипте получать значение способом $_GET['ddd'] не выйдет
пробуйте
$_SERVER['QUERY_STRING'],
$_REQUEST["ddd"]


-----
Truly yours, Sasha.
 
My status
 Top
UFOlog
Отправлено: 03 Мая, 2007 - 18:36:32
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2007  


Помог: 0 раз(а)




Valenok, спасибо за ответ, однако мне до конца не ясно что куда писать.

У меня есть основной скрипт spcript1.php в нем я хочу вызвать script2.php, причем передать параметр в script2.php, так как это сделать? Куда какие функции вписывать? Если не трудно дайте пример и в 2-х словах объясните суть.
 
 Top
valenok
Отправлено: 03 Мая, 2007 - 19:46:05
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




вариант первый (работоспособность не проверена)
PHP:
скопировать код в буфер обмена
  1.  
  2. scrip1.php
  3.  
  4. <?PHP
  5. exec("/usr/local/bin/php save.php?ddd=ip &");
  6. ?>
  7.  
  8. script2.php
  9. <?PHP
  10. echo $_SERVER['QUERY_STRING'] . $_REQUEST["ddd"] ;
  11. ?>
  12.  


Вариант второй:
PHP:
скопировать код в буфер обмена
  1.  
  2. script1.php
  3.  
  4. <?PHP
  5.  $ddd = 'abc';
  6.  require_once('script2.php');
  7. ?>
  8.  
  9. script2.php
  10. <?PHP
  11. echo $ddd;
  12. ?>
  13.  


-----
Truly yours, Sasha.
 
My status
 Top
UFOlog
Отправлено: 03 Мая, 2007 - 20:49:24
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2007  


Помог: 0 раз(а)




Valenok, привет еще раз.

Первый вариант не прошел.
Второй вариант работает. Можешь в 2-х словах объяснить смысл операции require_once('script2.php');.

Есть еще один нюанс, я хотел, чтобы скрипт script2.php запускался в фоновом режиме, но как я понимаю script1.php запускает script2.php, выполняется script2.php, далее выполняется script1.php. Это так?\n\n(Добавление)
Valenok, кстати, есть еще вариант
script1.php
<?php
exec('/usr/local/bin/php script2.php param1 param2');
?>

script2.php
<?php
print "I'm first parameter $argv[1]nI'm second parameter $argv[2]n";
?>

Однако вот что получается:

при таком раскладе в script2.php передаются параметры в виде строк param1 и param2, если код изменить на
<?php
exec('/usr/local/bin/php script2.php $param1 $param2');
?>
где $param1 и $param2 - переменные, то все-равно в script2.php они придут в виде строк $param1 $param2.
Так как передать значения переменных, а не их название в дочерний скрипт, при этом запустив его в фоновом режиме?
 
 Top
valenok
Отправлено: 03 Мая, 2007 - 22:54:10
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)





http://php.net/include () http://php.net/include_once ()
http://php.net/require () http://php.net/require_once ()
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3.  
  4. // Так передвать значения
  5. exec('/usr/local/bin/php script2.php'. $param1 $param2);
  6.  
  7. // не exec о программа запускается и работает в фоновом режиме
  8. pclose(popen("/usr/local/bin/php /b script2.php". $param1 $param2, 'r'));
  9.  
  10. // Оптимальный вариант
  11. exec('start /B /usr/local/bin/php script2.php'. $param1 $param2,$output,$return);
  12.  


-----
Truly yours, Sasha.
 
My status
 Top
UFOlog
Отправлено: 03 Мая, 2007 - 23:11:23
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2007  


Помог: 0 раз(а)




Можно и так:
script1.php
<?php
exec("/usr/local/bin/php script2.php param1 param2");
?>

script2.php
<?php
print "I'm first parameter $argv[1]nI'm second parameter $argv[2]n";
?>

Просто поменял кавычки в script1.php c ''
<?php
exec('/usr/local/bin/php script2.php param1 param2');
?>
на
<?php
exec("/usr/local/bin/php script2.php param1 param2");
?>
Огромное спасибо!
 
 Top
valenok
Отправлено: 04 Мая, 2007 - 06:36:29
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




можно


-----
Truly yours, Sasha.
 
My status
 Top
FmoB
Отправлено: 15 Февраля, 2013 - 19:05:33
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




include не проще?
 
 Top
EuGen Администратор
Отправлено: 15 Февраля, 2013 - 19:11:45
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Нет.
Тема закрыта!


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Операционная система и системные вызовы »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB