[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Работа с сокетами
delta_beta
Нужно передать сообщение через сокет. Сообщение большое и поэтому разбивается на куски. Вопрос вот в чем. Если передается 125 кусков сообщения, то оно записывается нормально, а если 131, то уже не пишется, хотя сокет никакой ошибки не выдает и возвращает успешный результат.
Вот часть кода:
$messageId = $this->getMessageId();

// Split the message into chunks
$messageChunks = $this->getMessageChunks($preparedMessage);
$messageChunksCount = count($messageChunks);

// Send chunks to graylog server
foreach(array_values($messageChunks) as $messageChunkIndex => $messageChunk) {
$bytesWritten = $this->writeMessageChunkToSocket(
$socket,
$messageId,
$messageChunk,
$messageChunkIndex,
$messageChunksCount
);

if(false === $bytesWritten) {
// Abort due to write error
return false;
}
}


где
protected function writeMessageChunkToSocket($socket, $messageId, $messageChunk, $messageChunkIndex, $messageChunksCount) {
return @fwrite(
$socket,
$this->prependChunkInformation($messageId, $messageChunk, $messageChunkIndex, $messageChunksCount)
);

}


и

protected function prependChunkInformation($messageId, $data, $sequence, $sequenceSize) {
if(!is_string($data) || $data === '') {
throw new \InvalidArgumentException('Data must be a string and not be empty.');
}

if(!is_integer($sequence) || !is_integer($sequenceSize)) {
throw new \InvalidArgumentException('Sequence number and size must be integer.');
}

if($sequenceSize <= 0) {
throw new \InvalidArgumentException('Sequence size must be greater than 0.');
}

if($sequence > $sequenceSize) {
throw new \InvalidArgumentException('Sequence size must be greater than sequence number.');
}

return pack('CC', 30, 15) . substr(md5($messageId, true), 0, 8) . pack('CC', $sequence, $sequenceSize) . $data;
}


подскажите пожалуйста в чем может быть проблема.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.