Додайте свій проект безкоштовно і почніть отримувати пропозиції від фрілансерів-виконавців вже через хвилини після публікації!
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 день900 ₴Переможець
    Алексей Т.
     1472  перевірений   68   0

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

    Україна Одеса | 12 квітня о 21:20 |
  2.  фрілансер більше не працює на сервісі
  3. 7 днів2000 ₴
    Сергей Зен
     184   1   0

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

    Україна Одеса | 11 квітня о 18:04 |

Замовник
Вячеслав Иванов
Україна Вінниця  5   0
Проект опублікований
11 квітня о 15:45
62 перегляди
Поділитися