Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Есть база данных. В ней хранятся все данные (сайты), которые нужны будут для обработки, и в нее же и записываются результаты обработки.

Сайтов 20 000.

Есть N функций, которые должны делаться каждые M минут с данными сайтами.

Функции – это вызов сайта по curl и передача ему некоторых параметров + анализ результатов. Параметры разные для каждой функции.

Пример:

- A+b должно делаться каждые 10 минут с момента последней операции этой функции по конкретному сайту. И результат в базу

- C*d должно делаться каждые 60 минут с момента последней операции этой функции по конкретному сайту. И результат в базу

-A\d должно делаться каждые 15 минут с момента последней операции этой функции по конкретному сайту. И результаты в базу

Т.е. функции разные и интервалы разные. Нужно как-то в «главном» скрипте предусмотреть добавление новых функций. Т.е. потенциально могут быть добавлены еще функции над данными сайтами.

Мы не знаем сколько времени уйдет на работу той или иной функции. Она может завершится за секунду, а может и за 10 минут. Поэтому запускать скрипты с функциями по крону – не выход. Если скрипт выполняется 1 секунду, то ждать до следующего запуска – терять время, и наоборот, если скрипт продолжает еще выполняться, а по крону запускаете его вторая копия, то будут ошибки. Да и вряд ли она запустится, пока не завершится первая…

Задача: нужно в постоянном режиме выполнять эти функции над сайтами из базы. Причем, чтобы все функции работали одновременно (результаты выполнения друг от друга не зависят и не влияют на выполнение других функций). Желательно, каждую функцию выполнять в поточном режиме (до 10 потоков).

Интервал M задается в самой функции в выборке из базы, например SELECT * FROM table WHERE date1

Допустим, сделали выборку, у нас 100 сайтов. И в многопоточном режиме их все обработали как надо, затем 15 секунд подождали и опять.

Нужно предусмотреть автозапуск, чтобы в случае остановки – вся «система» запускалась автоматически. Думаю по крону проверка каждую минуту и запуск в случае, если не работает.

Нужно так же предусмотреть корректную ручную остановку «системы», т.е. может в некий файл писать флаг 1/0. И чтобы «система» постоянно мониторила этот файл (скажем, раз в минуту). В случае если там 1 – работаем. Как только там 0 – система завершает все текущие функции и останавливается полностью. При автозапуске так же обращать внимание на этот флаг – если 1 – запускаемся, 0 – нет.

Так же, нужно учитывать еще один флаг настройки – есть или нет интернет. Так же в другом файле флаг 1/0. Если 0 – интернета нет, работать не нужно, если 1 – все в порядке, работаем.

Наличие интернета будет проверяться другим скриптом и писаться в этот файл нужный флаг.

Это нужно сделать в виде функции и запускать ее внутри каждой функции над сайтами – если 0 – работаем, если 1 – прекращаем работу функции сразу.

Есть еще одна функция, которая так же выполняется постоянно, она мониторит, когда в определенной таблице появляется задание на отправку писем и выполняет их. Желательно так же в многопоточном режиме. Т.е. сделали выборку, у нас, допустим, 100 писем нужно отправить. И есть функция отправки письма. Нужно наверное тоже в многопоточном режиме, чтобы не в цикле 100 раз, а, скажем, 10 раз по 10.

Я заранее извиняюсь, что не совсем в терминах силен. Но задачу обрисовал – нужно без остановки постоянно работать с сайтами из базы. Причем чтобы функции работали параллельно и многопоточно.

Знаю, что такое проще сделать например на С. Но нужно на PHP ))

От Вас комментарии (можно\нельзя, может как-то по другому), цена и сроки.

10 лет назад
Defin
40 летРоссия
18 лет в сервисе
Была
7 лет назад
  • Похожие заказы
  • Необходимо: - настроить корректную работу геотаргетинга по странам, городам и провайдерам Реализация: Все изменения системы должны быть модульными. В идеале – вынесены в отдельный плагин. Таким образом обновление ядра системы не должно привести к некорректной работе функционала. Рекомендации ...

    Закрыт
    10 лет назад
  • $100

    Необходимо сделать именной HIDE для DLE Обычный хайд реализован посредством самого движка, мне же необходимо что скрытое хайдом мог прочесть либо определенный пользователь либо несколько пользователей .

    Завершен
    10 лет назад
  • Нужен человек, для совместной разработки сайта на C#, ASP MVC. У Вас есть: — английский на уровне чтения и понимания технической документации. — опыт C#, ASP, MVC, VS2012, TSQL, Git — время для работы над проектом 3–4 часа ...

    Закрыт
    10 лет назад
  • $100

    нужно внести незначительные изменения в верстку и функционал сайта и еще одного сайта тоже на opencart. тех задание есть, напишу при личной переписке. работы реально разбирающимся на один день. скрипты менять не требуется, в основном только косметика.

    Закрыт
    10 лет назад
  • $250

    Нужен аналог - http://fpostedit.com/products.html Нужен не весь функционал, но должна быть возможность добавлять новые возможности По началу интересует работа с - DLE, vBulletin, phpBB Также, надо будет написать дополнительно 2 маски по которым будет меняться ссылки (простые) Хотелось ...

    Закрыт
    10 лет назад
  • Есть функция, которая осуществляет валидацию формы адреса. Примерная работа: проверяет, есть ли координаты в поле. Если нет, то берет адрес и получает по нему координаты. Далее вставляет их в поле, и возвращается результат работы функции - return ...

    Закрыт
    10 лет назад