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
Форумы портала PHP.SU :: Версия для печати :: Можно ли функцией exec() или system() запускать скрипт, передавая ему параметр?
Форумы портала PHP.SU » » Операционная система и системные вызовы » Можно ли функцией exec() или system() запускать скрипт, передавая ему параметр?

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

1. UFOlog - 03 Мая, 2007 - 16:03:49 - перейти к сообщению
Вопрос таков, можно ли функцией exec() или system() запускать скрипт, передавая ему параметр?

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

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

Помогите, плиз.
2. valenok - 03 Мая, 2007 - 17:04:51 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. $ddd = 'abc';
  3. require_once('script2.php');
  4.  
\n\n(Добавление)
В скрипте получать значение способом $_GET['ddd'] не выйдет
пробуйте
$_SERVER['QUERY_STRING'],
$_REQUEST["ddd"]
3. UFOlog - 03 Мая, 2007 - 18:36:32 - перейти к сообщению
Valenok, спасибо за ответ, однако мне до конца не ясно что куда писать.

У меня есть основной скрипт spcript1.php в нем я хочу вызвать script2.php, причем передать параметр в script2.php, так как это сделать? Куда какие функции вписывать? Если не трудно дайте пример и в 2-х словах объясните суть.
4. valenok - 03 Мая, 2007 - 19:46:05 - перейти к сообщению
вариант первый (работоспособность не проверена)
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.  
5. UFOlog - 03 Мая, 2007 - 20:49:24 - перейти к сообщению
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.
Так как передать значения переменных, а не их название в дочерний скрипт, при этом запустив его в фоновом режиме?
6. valenok - 03 Мая, 2007 - 22:54:10 - перейти к сообщению

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.  
7. UFOlog - 03 Мая, 2007 - 23:11:23 - перейти к сообщению
Можно и так:
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");
?>
Огромное спасибо!
8. valenok - 04 Мая, 2007 - 06:36:29 - перейти к сообщению
можно
9. FmoB - 15 Февраля, 2013 - 19:05:33 - перейти к сообщению
include не проще?
10. EuGen - 15 Февраля, 2013 - 19:11:45 - перейти к сообщению
Нет.

 

Powered by ExBB FM 1.0 RC1