Максимальный размер передаваемых данных через сокет

stanlee

Новичок
ну у меян всегда работало по схеме отдал пакет закрыл сокет
я прсото изменю такстику
буду писать в сокет мелкими порциями и закрывать
посмотрим что получится

-~{}~ 25.10.10 23:26:

написал в сокет 20кб
спокойно взяло

но как я и гвоорил не обязательно передавать размер сообщения, можно просто увеличить предел до немогу и писта в его иапазоне

сейчас я выставил socket_read 4096, в него записалось 4096, а остальное не прошло

указав 102400, т.е 100кб, все спокойно прошло

я так понял 8192 это системный лимит, но какой паратмер в системе за него отвечает я так и не понял
 

stanlee

Новичок
я тоже поржал, когда перечитал сообщение, но решил оставить - очень смешно вышло

побочный эффект тонких клав )

-~{}~ 27.10.10 00:39:

остановился на таком варианте

клиент
PHP:
$request = gzcompress($request, self::$compression);

// подсчитываем длину строки
$size = strlen($request);
// количестко пересылаемых байт за раз
$step = 1024;
// количество циклов
$cycles = $size/$step;

$start = 0;

for ($i = 0; $i <= $cycles; $i++)
{
	$line = substr($request, $start, $step);
	socket_write($socket, $line, strlen($line));
	$start += $step;
}

сервер
PHP:
$data = '';

if(($line = @socket_read(self::$socket, 1024)) === false)
{
	...
}
else
{
	$data .= $line;
}

...

$data = gzuncompress($data);
может быть кому то пригодится
 
Сверху