Donc, ce que j'ai ici est une fonction qui lit la sortie d'un socket.Fread variable max de 8192
$content=$this->tsread(256);
function tsread($size,$timeout=1)
{
global $handle;
$start=microtime(true);
do
{
usleep($size*10);
$data=fread($handle,1);
$info=stream_get_meta_data($handle);
}
while ((microtime(true)-$start)<$timeout and $info['timed_out']);
do
{
usleep($size*10);
if ($info['unread_bytes']>$size)
{
$data.=fread($handle,$size);
}
else
{
$data.=fread($handle,$info['unread_bytes']);
}
$info=stream_get_meta_data($handle);
}
while ($info['unread_bytes']>0);
return $data;
}
Habituellement, cela se lit comme suit avec succès la sortie, mais récemment la sortie de la prise a été plus grande et la fonction ne lit pas avec succès tout.
Lorsque je strlen ($ data) Je reçois une valeur de 8192.
Y at-il une taille variable max? Ou y a-t-il quelque chose dans la fonction qui limite la longueur de $ data à 8192?
je régler la taille de bloc à 256 avec 'tsread (256);' et '$ data = fread (. $ handle, $ taille); – codexo10Z
@ codexo10Z avez-vous répondre à cette question? Si vous en avez un autre, comment le faire? Posez une autre question avec le code entier, la classe et/ou le framework que vous utilisez. – user10089632