Publish your project for free and start receiving offers from freelance contractors in serveral minutes after publication!
900 ₴

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

project complete


Итак, есть скрипт 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-интерпретатора.


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

Client's feedback about the contractor Алексее Т.

Quality
Professionalism
Price
Availability
Terms

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

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

Freelancer's feedback about the client Вячеславе Иванове

Payment
Task formulation
Requirements
Availability

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

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


Make a proposal!

The client doesn't want to make prepayment? Offer him to make a payment via Safe to avoid possible fraud.

  1. 1 day900 ₴Winning proposal
    Алексей Т.
     2388  verified   100   0

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

    Ukraine Odessa | 12 April 2017 |
  2.  freelancer isn't working in the service any longer
  3. 7 days2000 ₴
    Сергей Петров
     309   3   1

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

    Ukraine Odessa | 11 April 2017 |

Client
Вячеслав Иванов
Ukraine Vinnytsia  9   0
Project published
11 April 2017
63 views