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

Необходимо написать функцию-обертку для socket_ функций, реализующую следующий алгоритм :

int HTTP_GET_Client ($url,$timeout, $result, $headers);

1) Подключиться к веб-серверу.

2) Отправить запрос .

3) Вернуть результат.

Требования :

1) реализовано только с использованием функций socket_XXX, без curl, и fsock..

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

3) жестко проверяются таймауты.

4) поддержка ответа с content-size и без content-size - если указан content-size, то читается в соответствии с ним. Если не указан - пока не будет закрытия сокета со стороны сервера, либо таймаута.

5) $result - хранит в себе бинарные данные - то, что идет после заголовков.

6) $headers - ассоц. массив полученных заголовков.

7) В запросе поддерживается только GET, протокол - HTTP без SSL

8) keepalive не поддерживается.

9) каждый шаг проверяется на ошибку, в случае ошибки - возвращается код ошибки.

10) url: string, timeout: float, milliseconds

11) если часть данных принята, но время истекло == ошибка.

12) код должен быть хорошо документирован т.к. это будет часть публичного модуля.

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

1) отвечает на connect с рандомной задержкой в заданном диапазоне (конфигурируется через сорцы)

2.1) после коннекта отдает content-length и остальные заголовки, а само тело отправляет по кусочкам, с задержкой между отправками порций (величина задержки конфигурируется).

2.2) после коннекта отдает заголовки и данные порциями, с задержкой (конфигурируемой), но без content-length.

12 лет назад
AlexMat
45 летРоссия
16 лет в сервисе
Был
7 лет назад
Выбранный исполнитель
UHF
44 годаРоссия
15 лет в сервисе
Был
2 года назад
12 лет назад
$50
2 дня
Хотелось вначале написать, что все отвратительно. Потому, что "такая корова нужна самому" (с) кто-то из классиков. Но, пожалуй, оставлю эту идею. Код написан отлично. Выше всяких похвал. Сразу видно, что человек не по наслышке знает все, что у него написано в профиле. Потому, что даже пхпшный код отражает это. Все было сделано в срок и качественно.
Никаких проблем с заказчиком на всех этапах работы, все четко и ясно - задание, договор, оплата. Рекомендую.