powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Асинхронный запуск скрипта из другого скрипта
17 сообщений из 17, страница 1 из 1
Асинхронный запуск скрипта из другого скрипта
    #39756057
Pupkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть два скрипта. Первый подготавливает параметры запуска 2-го скрипта и запускает его.

<?php
...
$par1=nnn;
$par2=mm;
shell_exec('vtoroj.php '.$par1.' '.$par2);
...
?>

Проблема в том, что по моей задумке первый скрипт (после запуска второго) должен продолжать выполняться. А он ждет окончания второго и только потом продолжается.

А как, чтобы не ждал?
...
Рейтинг: 0 / 0
Асинхронный запуск скрипта из другого скрипта
    #39756079
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выполнять вызываемую программу в фоне. Символ &
...
Рейтинг: 0 / 0
Асинхронный запуск скрипта из другого скрипта
    #39756127
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В конце команды добавь &
...
Рейтинг: 0 / 0
Асинхронный запуск скрипта из другого скрипта
    #39756130
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или можно почитать дальше книжку по основам запуска программ в операционной системе. До передачи аргументов в команду запуска дочитали же. :)
...
Рейтинг: 0 / 0
Асинхронный запуск скрипта из другого скрипта
    #39756137
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Асинхронный запуск скрипта из другого скрипта
    #39756660
Pupkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkleВыполнять вызываемую программу в фоне. Чтобы выполнялось асинхронно, оказывается, надо выполнять в фоне. Я даже удивляюсь - как это я сам не догадался? Чтобы каша была с маслом, надо добавить масла. Вот!
В конце команды добавь &На всяк случай привожу команду дословно (добуквенно):

shell_exec($execPointer.' '.$fromDate.' '.$toDate.' '.$page.' \''.$groupEvent.'\'');

Господа советчики, очень прошу - снизойдите от своего корифейства и укажите конкретное место в shell строке, куда приткнуть "&".
...
Рейтинг: 0 / 0
Асинхронный запуск скрипта из другого скрипта
    #39756663
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PupkinГоспода советчики, очень прошу - снизойдите от своего корифейства и укажите конкретное место в shell строке, куда приткнуть "&".Амперсанд ставить в самый конец команды, поле параметров, если они есть.
И, если возникнут трудности, так уж сделайте, хотя бы, обещанное Вами - приведите команду полностью, а не в виде свалки ничего не говорящих переменных.
...
Рейтинг: 0 / 0
Асинхронный запуск скрипта из другого скрипта
    #39756700
Pupkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkleприведите команду полностью

$fromDate и $toDate - даты из db в формате гггг-мм-дд
$page - число int от 1 до теоретически неограниченого
$groupEvent='Sync goods';

В db 10 записей с числом от 0 до 9 и их "занятость". Изначально все не занято.

возврщает первое свободное число из db в $paramId (или ожидает оное)
while(($paramId=GetFreeThreadId($GLOBALS['dbCnn']))==='') usleep(50000);

формируется некий номер в $thrNr, используемый далее как часть имени.
$thrNr=$GLOBALS['paramId']-3; // Warning!!! For 0-th thread ParamId=3 etc. to 12

формируется имя запускаемого скрипта вида SubSyncId_N.php, где N - число 0..9.
скрипты загодя существуют, отличаются только именем и ждут запуска
$execPointer='php SyncThreads/SubSyncId_'.$thrNr.'.php';

устанавливается "занятость" числа в db (занятость данного скрипта)
UpdateValueInDb('params','Value','1','ParamId='.$thrNr,$groupEvent);

запускается скрипт
$cmd=$execPointer.' '.$fromDate.' '.$toDate.' '.$page.' \''.$groupEvent.'\'';
shell_exec($cmd);

запускаемый скрипт анализирует параметры как соответствующие $argv[] и,
сделав свою задачу, благополучно умирают (выходят).
А умираючи обновляют свою "занятость" в базе на "не занятость".

---- еще раз

$fromDate и $toDate - даты из db в формате гггг-мм-дд
$page - число int от 1 до теоретически неограниченого
$groupEvent='Sync goods';
while ($page) //их много
{
while(($paramId=GetFreeThreadId($GLOBALS['dbCnn']))==='') usleep(50000);
$thrNr=$GLOBALS['paramId']-3; // Warning!!! For 0-th thread ParamId=3 etc to 12
$execPointer='php SyncThreads/SubSyncId_'.$thrNr.'.php';
UpdateValueInDb('params','Value','1','ParamId='.$thrNr,$groupEvent);
$cmd=$execPointer.' '.$fromDate.' '.$toDate.' '.$page.' \''.$groupEvent.'\'';
shell_exec($cmd);
$page++;
}
...
Рейтинг: 0 / 0
Асинхронный запуск скрипта из другого скрипта
    #39756707
Pupkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkleИли можно почитать дальше книжку по основам запуска программ в операционной системе. До передачи аргументов в команду запуска дочитали же. :)
Не надо про книжку, ее нет! Плохо искал? Может быть.
Зато нашел немерянное количество ЧерезЖопных предложений,
а так же "МопТвоюЯтей" по поводу PHP-шных и MySQL-льных особенностей,
каковые очень хорошо охарактеризовали качество выше указанных продуктов
для меня - первохода.
Не рекомендую никому. И сам (по своему желанию) не возьмусь.
Кстати, об передаче аргументов в команду запуска никак не из книжки,
а как раз из "МопТвоюЯтей".
Ежели насоветуете мне что почитать толковое, буду очень рад и за сове подумаю спасибо.
...
Рейтинг: 0 / 0
Асинхронный запуск скрипта из другого скрипта
    #39756839
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Асинхронный запуск скрипта из другого скрипта
    #39758959
Pupkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В конце команды добавь &В комментариях на каком-та форуме (уж не помню где) прочитал совет, что нужно направить вывод в "никуда".
Для этого к строке команды нужно добавить такое: " > /dev/null &".
Не понимая что делаю, тупо добавил и оно заработало. Асинхронно!

Теперь запуск выглядит так:

shell_exeс($cmd." > /dev/null &");

что такое $cmd - см. выше.
...
Рейтинг: 0 / 0
Асинхронный запуск скрипта из другого скрипта
    #39759176
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pupkin,

вот вы как думаете, хорошо использовать в кросс-платформенном языке читы средства зависимые от платформы?
...
Рейтинг: 0 / 0
Асинхронный запуск скрипта из другого скрипта
    #39759209
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)Pupkin,

вот вы как думаете, хорошо использовать в кросс-платформенном языке читы средства зависимые от платформы?

Кросс-платформенность языка не предполагает того, что на нем будут писать кросс-платформенные продукты.
...
Рейтинг: 0 / 0
Асинхронный запуск скрипта из другого скрипта
    #39759210
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точнее сказать "не обязывает".
...
Рейтинг: 0 / 0
Асинхронный запуск скрипта из другого скрипта
    #39759216
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettТочнее сказать "не обязывает".если есть поддерживаемая либа, то писать напрямую это дурной тон
...
Рейтинг: 0 / 0
Асинхронный запуск скрипта из другого скрипта
    #39759221
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)HettТочнее сказать "не обязывает".если есть поддерживаемая либа, то писать напрямую это дурной тон
Согласен, но платформо-зависимость тут не причем.
...
Рейтинг: 0 / 0
Асинхронный запуск скрипта из другого скрипта
    #39759537
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

ну да, частный случай плохого применения
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Асинхронный запуск скрипта из другого скрипта
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]