Zacząłem sobie pisać klasę do obsługi protokołu Gadu-Gadu 8. Zasadniczo pobieram IP serwera, odbieram seed, obliczam hash hasła, łączę się, odbieram pakiet, że połączony i ...

kiedy np. chcę coś wysłać i zaraz potem pobrać listę kontaktów... te dane zamiast być wysłane w dwóch pakietach, "kleją" się do siebie i wysyłane są jako jeden pakiet.

A kiedy do funkcji dodam sleep() wszystko działa - wysyła pakiet po pakiecie...

  1. <?php
  2. private function sendData($data, $type)
  3.    {
  4.        if (is_array($data))
  5.        {
  6.            foreach ($data as $v)
  7.            {
  8.                $put .= $v;
  9.            }
  10.        }
  11.        
  12.        $header = pack("II", $type, strlen($put));
  13.  
  14.        $put = $header . $put;
  15.  
  16.        if (False == fwrite ($this->server_handler, $put, strlen($put))) {
  17.            throw new Exception ("nie moglem wyslac danych");
  18.        }
  19.        /** ide spac na sekunde, bo jestem glupi :| **/
  20.        sleep(1);
  21.        return True;
  22.    }
  23. ?>

jak ktoś mi wytłumaczy dlaczego tak jest, będę wdzięczny...