Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
-1 / 7 / 0
Регистрация: 03.02.2014
Сообщений: 100

Как ограничить количество запусков одного скрипта

18.10.2015, 17:58. Показов 2187. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Есть скрипт, который очень долго выполняется. Ну например какой-то парсер. И нужно сделать так, чтоб его невозможно было запустить 2 раза одновременно. Как это можно реализовать? В гугле нашел такой способ:
PHP
1
    flock(fopen("temp/lock.txt", "w+"), LOCK_EX) or die('Скрипт уже выполняется и ещё не завершил свою работу');
но он не помогает. Я ч-з аякс запускаю скрипт 2 раза, и 2 раза он начинает выполняться одновременно.
Может есть ещё какие-то способы ограничить повторный запуск скрипта?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.10.2015, 17:58
Ответы с готовыми решениями:

Как ограничить количество запросов в базу данных с одного ip?
как ограничить кол запросов в базу данных с одного ip на определенное время?

Ограничить количество запусков программы
Здравствуйте, написал программу, и теперь хочу сделать так, чтобы можно было без ввода регистрационного ключа запускать ее только 3 раза. ...

Ограничить количество запусков программы
Как Ограничить количество запусков программы? БД Access. Нужно сделать так чтобы одновременно могли работать максимум 5 пользователей....

7
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
18.10.2015, 18:49
Кстати, недавно думал над этим вопросом. Пока придумал только записывать состояние в БД. В начале скрипта записываем locked = true, после окончания - false. Ну и проверяем это поле перед началом парсера, если true - делаем die().
1
-1 / 7 / 0
Регистрация: 03.02.2014
Сообщений: 100
18.10.2015, 18:50  [ТС]
Спасибо, надо попробовать!
0
36 / 36 / 18
Регистрация: 01.01.2015
Сообщений: 287
18.10.2015, 19:22
lockf для FreeBSD flock для линукса.
рекомендую юзать эти команды не в скрипте пхпшном, а в команде запуска.
т.к. реализация для блокировки через базу не тривиальная +
в пхпшном скрипте оч легко допустить ошибку => может поломатся блокировка
0
-1 / 7 / 0
Регистрация: 03.02.2014
Сообщений: 100
18.10.2015, 19:59  [ТС]
Jodah, да, возникают проблемы, если скрипт завершается из-за какой-то ошибки. В моём случае это max execution time exceeded, и файл уже не отпирается.

Добавлено через 2 минуты
evgenkur, я тестю на винде. В линуксе и FreeBSD к сожалению не разбираюсь. Мне бы вариант, чтоб работало не зависимо от операционки сервака...
0
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
18.10.2015, 20:21
Лучший ответ Сообщение было отмечено Altai90 как решение

Решение

Altai90, а какой этот max execution time? Стандартно 30 сек?

Можно добавлять в БД время последнего запуска. И если с момента запуска прошло более 30 сек - разрешать следующий запуск.
1
36 / 36 / 18
Регистрация: 01.01.2015
Сообщений: 287
18.10.2015, 20:33
Цитата Сообщение от Altai90 Посмотреть сообщение
evgenkur, я тестю на винде. В линуксе и FreeBSD к сожалению не разбираюсь. Мне бы вариант, чтоб работало не зависимо от операционки сервака...
а в чем проблема виртуалку поставить?
0
-1 / 7 / 0
Регистрация: 03.02.2014
Сообщений: 100
18.10.2015, 22:47  [ТС]
Jodah, отлично, всё получилось, спасибо за подсказки!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.10.2015, 22:47
Помогаю со студенческими работами здесь

Ограничить количество запусков программы Delphi
Как Ограничить количество запусков программы? БД Access. Нужно сделать так чтобы одновременно могли работать максимум 5 пользователей....

Ограничить кол-во запусков
Ребят, подскажите как такое сделать: организовать защиту, основанную на ограничении количества запусков приложения, причем значение...

Как из одного скрипта изменить переменную (int) другого скрипта?
У меня есть два скрипта (money который отвечает за общее количество денег и CarBuy который отвечает за покупку машины). Мне нужно, чтобы...

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

Как Ограничить выполнение скрипта (1 раз в сутки)?
На хосте лежит скрипт test.php Как можно сделать защиту от выполнения данного скрипта более чем 1 раз в сутки (Он выполняется только...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru