Реклама на сайте Advertise with us
Тема: Запуск PHP скрипта как внешней программы. Расширенный поиск по форуму
 
Внимание! В связи с устареванием топика эта страница была взята из кэша.
Автор Сообщение
Информация о пользователе Jam


Зарегистрирован: 01.10.03
Сообщения: 221
Ссылка на сообщениеДобавлено: 04/12/03 в 22:03     

Необходимо запустить некий ПХП скрипт из другого ПХП скрипта не дожидаясь завершения последнего.
Пробовал экспериментировать с командами exec и system, но это всё было под виндой, а под никс системами не получилось.
Посоветуйте как осуществить.

K началу

 
Информация о пользователе perlmaster


Зарегистрирован: 27.02.03
Сообщения: 455
Ссылка на сообщениеДобавлено: 04/12/03 в 22:31     

Почитай умный мануал типа http://www.cvacubo.com/rec/php/commandline.html

K началу

 
Информация о пользователе Pentarh


Зарегистрирован: 05.04.03
Сообщения: 1377
Ссылка на сообщениеДобавлено: 04/12/03 в 23:13     

А ты в конце команды, которую system() даешь, ставь амперсанд:

"/usr/local/bin/php script.php &"

K началу

 
Информация о пользователе Jam


Зарегистрирован: 01.10.03
Сообщения: 221
Ссылка на сообщениеДобавлено: 05/12/03 в 12:52     

запускаю вот это
<? system("/usr/local/bin/php echo.php &"); ?>

echo.php
<? echo "jam"; ?>
и всё равно падла пишет
Content-type: text/html X-Powered-By: PHP/4.3.0 jam
мне самое главное чтобы первый скрипт не ждал завершения работы второго, вывода в буфер во втором скрипте не будет, но будут операции занимающие продолжительное время....
а первый скрипт всё равно ждёт завершения второго.... падла.

K началу

 
Информация о пользователе pelmen


Зарегистрирован: 14.02.03
Сообщения: 60
Ссылка на сообщениеДобавлено: 05/12/03 в 13:39     

Jam писал:
запускаю вот это
<? system("/usr/local/bin/php echo.php &"); ?>

echo.php
<? echo "jam"; ?>
и всё равно падла пишет
Content-type: text/html X-Powered-By: PHP/4.3.0 jam
мне самое главное чтобы первый скрипт не ждал завершения работы второго, вывода в буфер во втором скрипте не будет, но будут операции занимающие продолжительное время....
а первый скрипт всё равно ждёт завершения второго.... падла.


Конкретики не знаю поэтому прдложу вариант
из пхп скрипта выставляешь флажек типа /home/user/run.file
а потом по крону раз в минуту запускать ресурсоемкий скрипт который сначала смотрит наличие файлика-флажка

Так же через содержание файлика можно передавать параметры.

хотя может сработает другой вариант
<? system("nohup /usr/local/bin/php echo.php &"); ?>

на фрях, nohup часто меня выручает, не знаю есть ли в других операционках.

Если не помогает, мне кажется, надо искать в стороне перенаправления стандартного вывода.

K началу

 
Информация о пользователе Pentarh


Зарегистрирован: 05.04.03
Сообщения: 1377
Ссылка на сообщениеДобавлено: 05/12/03 в 14:23     

Итак, читаем RTFM по функции <b>system()</b>:

Цитата:

If you start a program using this function and want to leave it running in the background, you have to make sure that the output of that program is redirected to a file or some other output stream or else PHP will hang until the execution of the program ends.

Таким образом надо средиректить стандартный вывод нашей функции куда-либо окромя <STDOUT>.
Получается так должно работать:

<? system("/usr/local/bin/php echo.php > /dev/null &"); ?>

K началу

 
Информация о пользователе Jam


Зарегистрирован: 01.10.03
Сообщения: 221
Ссылка на сообщениеДобавлено: 05/12/03 в 14:44     

nohup - не спасло, спасибо за совет
вариант с флагом продумывал,
вообще проще бы было запускать скрипт каждую минуту и смотреть флаг, но я хочу построить систему таким методом чтобы был один скрипт, который кроном запустился, посмотрел есть ли новые задачи и по ним уже запустил определённые скрипты,
несколько задач - несколько скриптов
а главный раздал задачи и пошёл спать, потом через минуту проснулся, посмотрел кто работает кто нет, нашёл новые задачи, запустил скрипты пошёл спать.....система я думаю понятна.
....забивать на такое распеределение не очень хотца icon_smile.gif больно нравится
хотя если не получится у меня запустить скрипт в background то пойду путём - крон, каждую минуту на каждый скрипт
а вывод в пустоту щяс попробую
в доках видал, что если массив вывода не задан то system(вроде) не будет вывода дожидаться....ни фига icon_smile.gif дожидается

K началу

 
Информация о пользователе Pentarh


Зарегистрирован: 05.04.03
Сообщения: 1377
Ссылка на сообщениеДобавлено: 05/12/03 в 14:47     

Ну а на дев-нул его?

K началу

 
Информация о пользователе Jam


Зарегистрирован: 01.10.03
Сообщения: 221
Ссылка на сообщениеДобавлено: 05/12/03 в 15:25     

девнул icon_smile.gif)
вывода нет
щас попробую чем-нить нагрузить echo.php
<?
system("/usr/local/bin/php echo.php > /dev/null &");
echo "done";
?>
и посмотрим с какой скоростью мне скинут done
блин icon_smile.gif)) заработало вроде!
кул!!!! спасибо за помощь!
создал безумное кол-во итераций в echo.php
for ($i=0; $i<100000000000000; $i++) {
$a++;
};
соответсвенно должен был он долго крутиться
систем его не дождалась и передала управление дальше
УРА!!! Товарищи!
Благодарствую!
Оценил всех по максимуму!
радости предела нет icon_smile.gif)))))))

K началу

 
Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!
Внимание! В связи с устареванием топика эта страница была взята из кэша.

Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »