Попробуй разбери мою утилиту, и выдерни классы для работы с сетью
https://rdot.org/forum/showthread.php?t=1160
Там же есть класс для работы с кип-аливе соединениями, пул неблокирующих сокетов и тд. Код прокоментирован, я думаю разберешься.
PS. Я как-то тестировал, fsockopen работает быстрее курла. Одна из возможных проблем - посылаемый Connection: keep-alive вместо Connection: close, тогда соединение может долго висеть.