Необходимо: - настроить корректную работу геотаргетинга по странам, городам и провайдерам Реализация: Все изменения системы должны быть модульными. В идеале – вынесены в отдельный плагин. Таким образом обновление ядра системы ...
Многопоточный демон-парсер на PHP
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.
Есть база данных. В ней хранятся все данные (сайты), которые нужны будут для обработки, и в нее же и записываются результаты обработки.
Сайтов 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 ))
От Вас комментарии (можно\нельзя, может как-то по другому), цена и сроки.
Заявки фрилансеров
Похожие заказы
- Веб-программирование1 заявкаЗакрыт11 лет назад
- $100
Необходимо сделать именной HIDE для DLE Обычный хайд реализован посредством самого движка, мне же необходимо что скрытое хайдом мог прочесть либо определенный пользователь либо несколько пользователей .
Веб-программирование1 исполнительЗавершен11 лет назад Нужен парсер данных с сайтов в csv файл для закачки в Шоп скрипт первый сайт burguy . ru
Веб-программирование7 заявокЗакрыт11 лет назадНужно взять потоки онлайн каналов, чтобы они работали на моем сайте. Сайт который нужно взять онлайн каналы http://www.glaz.tv/online-tv/
Веб-программирование2 заявкиЗакрыт11 лет назадНужен человек, для совместной разработки сайта на C#, ASP MVC. У Вас есть: — английский на уровне чтения и понимания технической документации. — опыт C#, ASP, MVC, VS2012, TSQL, Git ...
Веб-программированиенет заявокЗакрыт11 лет назадНужен опытный программист Php Zend Framework, з хорошым опытом в серйозных проэктах. Занятость 10-20 часов в неделю.
Веб-программирование4 заявкиЗакрыт11 лет назад- $100
нужно внести незначительные изменения в верстку и функционал сайта и еще одного сайта тоже на opencart. тех задание есть, напишу при личной переписке. работы реально разбирающимся на один день. скрипты менять не требуется, ...
Веб-программирование11 заявокЗакрыт11 лет назад Требуется из представленного описания в файле спроектировать базу данных. База MySql. Формат - стандартный экспорт.
Веб-программирование1 исполнительЗавершен11 лет назад- $250
Нужен аналог - http://fpostedit.com/products.html Нужен не весь функционал, но должна быть возможность добавлять новые возможности По началу интересует работа с - DLE, vBulletin, phpBB Также, надо будет написать дополнительно 2 маски ...
Веб-программирование1 исполнительЗакрыт11 лет назад Есть функция, которая осуществляет валидацию формы адреса. Примерная работа: проверяет, есть ли координаты в поле. Если нет, то берет адрес и получает по нему координаты. Далее вставляет их в поле, и возвращается результат ...
Веб-программирование1 заявкаЗакрыт11 лет назад