Нужно написать многопоточное Ubuntu приложение.

Приложение будет использоваться как "прототип", под свои нужды я его буду допиливать сам.

Опыта написания кода под Linux системы у меня нет, на C писал мельком лет 10 назад, сейчас пишу на php - поэтому код должен быть читаемым и хотя бы немного коментированным (на уровне 1 комент на 1 задачу из функционала).

основной функционал описан ниже. Для тестирования нужен будет сервеный функционал, его я предоставлю.

* приложение нужно будет компилировать под ubuntu

* запускаться будет в формате "app 123 dkfjkjdkfk", где 123 dkfjkjdkfk цифровая и строковая переменные, количество типы переменных я буду допиливать сам

* может писать логи в текстовый файл (с указанием времени события с точностью до миллисекунд и текущего использования памяти программой) в формате

[2013-07-17 23:22:31.8781] [2.3 Mb] - message - function log($msg)

* может запрашивать урл ХХХ (с сохранением cookies между запросами - можно юзать сurl, если он поддерживает многопоточность) - function request($url,$postvars = array(), $cookies=null)

* может связываться с базой данных mysql

* основной цикл

** приложение отправляет POST запрос на урл http://server.com/login.php (с логином\паролем\служебными данными)

** приложение сохраняет куки в файл

** приложение устанавливает соединение с mysql

** приложение sleepает до наступления времени HH:MM:SS

** приложение создает 200 потоков

*** в каждый поток передается случайное число миллисекунд, время HH:MM:SS, переменные для запроса

*** поток ждет до наступления времени HH:MM:SS.ms

*** дальше в цикле поток делает 1000 раз

**** поток делает GET запрос на урл http://server.com/buy.php, сохраняет точное время запроса

**** поток анализирует регэкспом полученные данные, [CODE: (\d+)], сохраняет время получения ответа (с точностью до миллисекунд) и код, при получении кода SUCCESS поток

прекращает работу и возвращает отладочные данные array(array(timeStart, resultCode,timeEnd), ...)

**** при возникновении ошибок (таймаута\других ошибок) - код ошибки идет родителю

**** при принудительном прекращении работы потока он должен вернуть родителю отладочные данные - array(array(timeStart, resultCode,timeEnd), ...)

** родитель висит пока работают потоки потомки, если один из потомков вернул код SUCCESS - родитель принудительно прекращает работу остальных потомков, собирает у них отладочные данные и сохраняет

их в файл

** плюс родитель должен раз в 15 секунд делать mysql запрос вида SELECT * FROM tasks WHERE id=XXX и если поле

STATUS==SUCCESS - завершать работу потоков и сохранять отладочные данные (возможно, делать это в новом потоке)

Требования к приложению

- реализовал подобную систему на php + fork, но при сотне\тысяче потоков плужение нереальное :(, поэтому скриптовые языки не подходят

- Язык желательно C или "C-подобный" язык

Бюджет

- до $500 если вы реально профи, гарантируете скорость работы приложения и готовы будете при необходимости оперативно помогать допиливать софт за доп $$. Сроки разработки неделя-две.

- до $200 если вы в общих чертах в курсе, что к чему, если у вас есть опыт программирования и вы не против взяться за это и готовы гарантировать сроки не больше месяца.

12 лет назад
zhil
42 года
18 лет в сервисе
Был
2 месяца назад

Заявки фрилансеров

Нет заявок фрилансеров