|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Justin Finch-Fletchley 2:5020/400 14 Aug 2004 00:26:12 To : abrasha shapirus Subject : ограничить количество работающих копий скрипта -------------------------------------------------------------------------------- Fri Aug 13 2004 20:41, abrasha shapirus wrote to All: as> дано: перловый скрипт, которого много копий могут быть запущены as> параллельно. as> задача: если запущено более, чем N этих скриптов, то каждый новый as> запускаемый скрипт в определенном месте должен ждать, пока скриптов as> станет N или меньше, после чего продолжить выполнение. as> нужно сие для ограничения количества одновременно работающих CGI-скриптов as> на не слишком мощной машине. as> как такое реализовать попроще и покрасивее? В общем я это делал может не очень красиво (ибо платформено зависимо), но у меня оно работает: sub check_run { my $scr=`ps -C gen.pl`; my $kol=split("\n",$scr); if ($kol>2) { die 'already runned'; } # ну тут еще проверки шли на другие скрипты } соответственно тебе можно вместо die например сделать: sub check_run { while (split("\n",`ps -C gen.pl`)>N+1) { sleep(1); } } ну в общем ты понял принцип... но платформенно зависимо, у меня работало на 3-х сервах, но где-то запраста может и не работать. --- ifmail v.2.15dev5.3 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор Архивное /ru.perl/16679bee411cb.html, оценка из 5, голосов 10
|