Внимание! В связи с устареванием топика эта страница была взята из кэша.
|
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 - не спасло, спасибо за совет вариант с флагом продумывал, вообще проще бы было запускать скрипт каждую минуту и смотреть флаг, но я хочу построить систему таким методом чтобы был один скрипт, который кроном запустился, посмотрел есть ли новые задачи и по ним уже запустил определённые скрипты, несколько задач - несколько скриптов а главный раздал задачи и пошёл спать, потом через минуту проснулся, посмотрел кто работает кто нет, нашёл новые задачи, запустил скрипты пошёл спать.....система я думаю понятна. ....забивать на такое распеределение не очень хотца больно нравится хотя если не получится у меня запустить скрипт в background то пойду путём - крон, каждую минуту на каждый скрипт а вывод в пустоту щяс попробую в доках видал, что если массив вывода не задан то system(вроде) не будет вывода дожидаться....ни фига дожидается
|
K началу
|
|
|
Pentarh
Зарегистрирован: 05.04.03
Сообщения: 1377
|
Добавлено: 05/12/03 в 14:47
|
|
Ну а на дев-нул его?
|
K началу
|
|
|
Jam
Зарегистрирован: 01.10.03
Сообщения: 221
|
Добавлено: 05/12/03 в 15:25
|
|
девнул ) вывода нет щас попробую чем-нить нагрузить echo.php <? system("/usr/local/bin/php echo.php > /dev/null &"); echo "done"; ?> и посмотрим с какой скоростью мне скинут done блин )) заработало вроде! кул!!!! спасибо за помощь! создал безумное кол-во итераций в echo.php for ($i=0; $i<100000000000000; $i++) { $a++; }; соответсвенно должен был он долго крутиться систем его не дождалась и передала управление дальше УРА!!! Товарищи! Благодарствую! Оценил всех по максимуму! радости предела нет )))))))
|
K началу
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |
Внимание! В связи с устареванием топика эта страница была взята из кэша.
|