Новичок
Покинул форум
Сообщений всего: 1
Дата рег-ции: Март 2014
Помог: 0 раз(а)
|
Нужно передать сообщение через сокет. Сообщение большое и поэтому разбивается на куски. Вопрос вот в чем. Если передается 125 кусков сообщения, то оно записывается нормально, а если 131, то уже не пишется, хотя сокет никакой ошибки не выдает и возвращает успешный результат.
Вот часть кода:
PHP:
скопировать код в буфер обмена
$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; } }
где
PHP:
скопировать код в буфер обмена
protected function writeMessageChunkToSocket($socket, $messageId, $messageChunk, $messageChunkIndex, $messageChunksCount) { $socket, $this->prependChunkInformation($messageId, $messageChunk, $messageChunkIndex, $messageChunksCount) ); }
и
PHP:
скопировать код в буфер обмена
protected function prependChunkInformation($messageId, $data, $sequence, $sequenceSize) { throw new \InvalidArgumentException('Data must be a string and not be empty.'); } 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; }
подскажите пожалуйста в чем может быть проблема.(Отредактировано автором: 17 Марта, 2014 - 12:37:45)
|