Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
(Perl) Как проконтроллировать, чтобы был запущен только один инстанс?
|
|||
|---|---|---|---|
|
#18+
Есть скрипт, который нежелательно запускать одновременно более одного раза. В скрипте есть проверка на такой запуск: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. Хочу сделать такую проверку лучше и по возможности без временных файлов. Использую такой код: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Но он почему-то не работает. Даже если заменить $0 на внешний файл, а режим открытия с '<' на '>' (у меня на отладке Windows, а тут про такой баг писали), все-равно не работает. Что не так в коде? ________________________ Мы смотрим с оптимизмом... ...в оптический прицел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 17:59 |
|
||
|
(Perl) Как проконтроллировать, чтобы был запущен только один инстанс?
|
|||
|---|---|---|---|
|
#18+
Alibek B.(у меня на отладке Windows, а тут про такой баг писали) В Unix (FreeBSD), кстати, тоже не работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 18:10 |
|
||
|
(Perl) Как проконтроллировать, чтобы был запущен только один инстанс?
|
|||
|---|---|---|---|
|
#18+
На фряхе у меня такое работает: Код: php 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 18:32 |
|
||
|
(Perl) Как проконтроллировать, чтобы был запущен только один инстанс?
|
|||
|---|---|---|---|
|
#18+
Апну тему. Снова потребовалось проверить, что скрипт не запущен дважды, и желательно без дополнительных файлов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 17:33 |
|
||
|
(Perl) Как проконтроллировать, чтобы был запущен только один инстанс?
|
|||
|---|---|---|---|
|
#18+
Alibek B.Апну тему. Снова потребовалось проверить, что скрипт не запущен дважды, и желательно без дополнительных файлов. получать список процессов и искать там свой файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 17:35 |
|
||
|
(Perl) Как проконтроллировать, чтобы был запущен только один инстанс?
|
|||
|---|---|---|---|
|
#18+
В списке процессов будет perl. Как я определю, какой именно скрипт он исполняет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 18:19 |
|
||
|
(Perl) Как проконтроллировать, чтобы был запущен только один инстанс?
|
|||
|---|---|---|---|
|
#18+
Alibek B.и желательно без дополнительных файлов.Да не вопрос. Можно и на сам файл скрипта ставить блокировку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 20:35 |
|
||
|
(Perl) Как проконтроллировать, чтобы был запущен только один инстанс?
|
|||
|---|---|---|---|
|
#18+
Так на $0 блокировка почему-то не работает. На отдельном файле (у меня это лог-файл, открытый в течении работы скрипта) работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 00:10 |
|
||
|
(Perl) Как проконтроллировать, чтобы был запущен только один инстанс?
|
|||
|---|---|---|---|
|
#18+
может как-то так? Код: php 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 14:25 |
|
||
|
(Perl) Как проконтроллировать, чтобы был запущен только один инстанс?
|
|||
|---|---|---|---|
|
#18+
А что этот код делает, можно прокомментировать? Я видимо его не совсем понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 15:51 |
|
||
|
(Perl) Как проконтроллировать, чтобы был запущен только один инстанс?
|
|||
|---|---|---|---|
|
#18+
использует форк для проверки запущенного инстанса. и если инстанс уже запущен, либо форк не удался - вываливается. ставите в начало скрипта, и вперед.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 00:45 |
|
||
|
(Perl) Как проконтроллировать, чтобы был запущен только один инстанс?
|
|||
|---|---|---|---|
|
#18+
lightspeedиспользует форк для проверки запущенного инстанса. и если инстанс уже запущен, либо форк не удался - вываливается. ставите в начало скрипта, и вперед..п....ц. Да простят меня модераторы. Орден Дедалла 1-й степени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 03:02 |
|
||
|
(Perl) Как проконтроллировать, чтобы был запущен только один инстанс?
|
|||
|---|---|---|---|
|
#18+
lightspeedиспользует форк для проверки запущенного инстанса. А в чем проверка заключается? Ну форкнется текущий процесс, ну форк тут же закроется. Как определяется, что параллельно запущен еще один процесс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 08:16 |
|
||
|
(Perl) Как проконтроллировать, чтобы был запущен только один инстанс?
|
|||
|---|---|---|---|
|
#18+
эм.. чуваки, не бейте меня сильно. это просто идея и код на вскиду. проверять не локом, к форкать процесс, и проверять статус. может быть она не верна, но блин, предложите свою тогда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 11:47 |
|
||
|
(Perl) Как проконтроллировать, чтобы был запущен только один инстанс?
|
|||
|---|---|---|---|
|
#18+
Alibek B., Sys::RunAlone - make sure only one invocation of a script is active at a time Код: coco 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 15:48 |
|
||
|
(Perl) Как проконтроллировать, чтобы был запущен только один инстанс?
|
|||
|---|---|---|---|
|
#18+
Alibek B., Proc::PID::File - a module to manage process id files Код: coco 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 16:00 |
|
||
|
(Perl) Как проконтроллировать, чтобы был запущен только один инстанс?
|
|||
|---|---|---|---|
|
#18+
lightspeedэм.. чуваки, не бейте меня сильно. это просто идея и код на вскиду. проверять не локом, к форкать процесс, и проверять статус. может быть она не верна, но блин, предложите свою тогда.Скажите, а водите машину вы тоже - управляя рулем с помощью попы?.. А код пишете путем хождения по клаве ногами? Может это какой-то кодерский абстракционизм... Давайте тогда и я попробую: Решать проблему колец и утечек памяти в Перле надо путем использования модуля CGI.pm: h1($var) - сделает ссылку "слабой", в то время как h5(@array) - сделает массив неубиваемым, даже если массив вышел из области видимости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 16:47 |
|
||
|
(Perl) Как проконтроллировать, чтобы был запущен только один инстанс?
|
|||
|---|---|---|---|
|
#18+
Alibek B.Так на $0 блокировка почему-то не работает. На отдельном файле (у меня это лог-файл, открытый в течении работы скрипта) работает.Можно посмотреть Ваш нерабочий пример? У меня блокировка работает, но несколько своеобразно. При попытке запустить второй экземпляр вываливается сообщение такого вида: Код: php 1. 2. В принципе, цель то предотвращения запуска второго экземпляра достинута, хоть и с генерацией ошибки (которую можно при желании отправить в /dev/null). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2014, 15:00 |
|
||
|
(Perl) Как проконтроллировать, чтобы был запущен только один инстанс?
|
|||
|---|---|---|---|
|
#18+
Так я его в самом начале приводил. Пробую лочить $0, но блокировка не работает. Такой код работает: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Но это у меня в данном примере есть постоянно открытый log-файл. А я бы хотел решение без дополнительных файлов (используя $0 или секцию _DATA_). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2014, 15:04 |
|
||
|
(Perl) Как проконтроллировать, чтобы был запущен только один инстанс?
|
|||
|---|---|---|---|
|
#18+
Alibek B., Прошу прощения, проглядел. Попробую его помусолить. Мой почти рабочий тестовый пример такой: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2014, 15:12 |
|
||
|
(Perl) Как проконтроллировать, чтобы был запущен только один инстанс?
|
|||
|---|---|---|---|
|
#18+
Вот такой тестовый вариант вполне рабочий получился: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. При запуске второго экземпляра получаю: Код: php 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2014, 16:59 |
|
||
|
(Perl) Как проконтроллировать, чтобы был запущен только один инстанс?
|
|||
|---|---|---|---|
|
#18+
кстати, почему у вас нигде в скриптах нет намеков на всякий там CGI и тд, но возникает ситуация когда скрипт все же запускают несколько раз? не нужно чтобы запускался больше одного раза - не запускайте ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 17:18 |
|
||
|
(Perl) Как проконтроллировать, чтобы был запущен только один инстанс?
|
|||
|---|---|---|---|
|
#18+
netwind, Так проблема второго запуска может возникнуть не только с использованием CGI. У меня как-то аналогичная ситуация возникла при ежеминутном запуске по крону. В нормальных условиях скрипт отрабатывает секунд за 20 и проблем не знал. А когда нагрузка на сервер как-то дико подскочила и скрипт не уложился в предполагаемую минуту - поперли дубликаты на выхлопе. Так и пришлось добавить блокировку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 17:44 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=38640435&tid=1462769]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
43ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 347ms |

| 0 / 0 |
