Разместите свой проект бесплатно и начните получать предложения от фрилансеров-исполнителей уже спустя минуты после публикации!
900 ₴

Написать многопоточный демон на bash

проект завершен


Итак, есть скрипт script1.php, который вызывается с параметрами: script1.php?id=1

Нужно написать демон под Centos7, который будет делать следующее:

1. Запускаем скрипт daemon.sh через ssh.

2. Демон запускает скрипт script3.php и получает в ответ такую строку: "1,5,147,2058" - т.е. набор номеров через запятую.

3. Демон создает столько потоков, сколько было номеров в той строке, и в каждом потоке запускает скрипт script1.php?id=1, где для параметра "id" подставляется очередной номер из этой последовательности.

Т.е. если от script3.php получена строка "1,5,147,2058", то будут запущены такие потоки:

script1.php?id=1

script1.php?id=5

script1.php?id=147

script1.php?id=2058

Номеров (а значит потоков) может быть и 1000 и 2000.

4. От каждого скрипта нужно дождаться ответ. Если скрипт завершился нормально, без ошибок, то ничего не делаем, а текстовый ответ скрипта (он написан для запуска в браузере) перенаправляем в пустоту. Если же запуск скрипта завершился ошибкой (503, "Server is temporarily unavailable" и т.д.), то дополнительно запускаем скрипт script2.php?id=1, где id - все тот же номер, который был использован для запуска скрипта script1.php

Что делает script2.php? Он просто логирует номера, которые завершились ошибкой сервера.

5. Итак, script1.php в текущем потоке выполнился (нормально или с ошибкой, неважно). Демон должен перезапустить его. И так он должен отслеживать все запущенные потоки, асинхронно (т.е. чтобы перезапустить скрипт в потоке, не нужно ждать когда завершаться скрипты в остальных потоках). И так бесконечно, до пункта 6.

6. Чтобы остановить демон, должна быть предусмотрена какая-то команда для терминала, или запуск какого-то второго скрипта daemon_stop.sh

7. Демон должен продолжать работу даже после закрытия терминала. А после открытия чтобы можно было продолжать наблюдать работу демона. Насколько я понимаю это делается через screen и ему подобные. Т.е. когда мы снова заходим на daemon.sh, то не запускаем его снова, а просто вновь видим его продолжающуюся работу.

8. Нужно придумать какой-то вывод в консоль, чтобы наблюдать за работой скрипта. Например такие показатели:

- количество запущенных потоков

- количество запусков скрипта script1.php по всем потокам за все время работы демона (должно накапливаться в какой-то переменной)

- в т.ч. количество положительных ответов по всем потокам за все время работы демона (должно накапливаться в какой-то переменной)

- в т.ч. количество аварийных завершений по всем потокам за все время работы демона (должно накапливаться в какой-то переменной)


Все 8 пунктов обязательны.

Очень желательно, чтобы демон был написан на bash. Или обоснуйте другие варианты.

Скрипты php будут находится в той же папке, что и daemon.sh. В скрипте должно быть предусмотрено автоопределение текущей папки и php-интерпретатора.


По срокам - чем быстрее, тем лучше.

Отзыв заказчика об исполнителе Алексее Т.

Качество
Профессионализм
Стоимость
Контактность
Сроки

Быстро, четко, рекомендую

Вячеслав И. Вячеслав Иванов

Отзыв фрилансера о заказчике Вячеславе Иванове

Оплата
Постановка задачи
Четкость требований
Контактность

Четкое ТЗ, быстрая проверка и оплата, рекомендую к сотрудничеству! 🙂

Алексей Т. Алексей Т.


Сделать ставку!

Заказчик не желает делать предоплату? Предложите оплату через Сейф, чтобы избежать возможного мошенничества.

  1. 1 деньскрытаПобедившая ставка
    Алексей Т.
     2426  проверен   99   0

    Можно написать на .Net core, более читабельный код будет

    Украина Одесса | 12 апреля 2017 |
  2.  фрилансер больше не работает на сервисе
  3. 7 днейскрыта
    Сергей Петров
     363   3   0

    Могу все это реализовать. Предоплата 300 грн. Обращайтесь.

    Украина Одесса | 11 апреля 2017 |

Заказчик
Вячеслав Иванов
Украина Винница  8   0
Проект опубликован
11 апреля 2017
63 просмотра