Если я не ошибаюсь, socket_read читает только те данные, которые доступны в данный момент, и, возможно, ваш PHP работает быстрее, чем сокет вашего сервера (и пытается прочитать данные до того, как они станут доступны).вам следует добавить какой-нибудь заголовок к вашему сообщению, который указывает длину ожидаемого сообщения.Затем вы продолжаете "socket_read", пока не прочитаете столько байтов.