@vstas да, так же, как и mysql[i]_fetch. MySQL'ная библиотека, которая не грузит все результаты в память вчера обсуждалась на Хабре, MSSQL'ную, видимо, придется вам самим поискать.
Имхо, более правильный вариант в данном случае - допилить процедуру, чтобы можно было постранично считывать данные.
@hvarts Ну, для простоты, например, так: pastebin.com/0ZbuuY84
Дальше неплохо было бы добавить как минимум проверки на существование $this->_sock перед его использованием, либо прокидывать дальше исключение из конструктора и там его ловить и обрабатывать (в giveitem.php)
@hvarts В обоих случаях запускаете через веб или отдельно скрипт через консоль?
Как я уже писал тут 2 проблемы:
1. Недостаточная проверка наличия соединения с сокетом
2. Нет соединения с сокетом
1-я проблема выявляется только когда появляется вторая.
Почему возникает вторая, из приложенных исходников сказать нельзя.
Я бы начал с первой - добавил бы проверку на открытость сокета, при невозможности его открыть / прочих ошибках выводил отладочную информацию / логировал (использовать socket_last_error и socket_strerror для первого варианта подключения к сокету и $errno, $errstr для второго)
@hvarts
1. Вместо function CServerRcon использовать function __construct
2. Добавить проверку наличия корректного значения в $this->_sock перед его использованием. В данный момент у вас, очевидно, сокет по какой-то причине не открывается, что в совокупности с недостаточной проверкой корректности подключения и приводит к ошибке.
@akubintsev Не за что. Вот про это я и говорил, что "не по цели средство". Вам серьезно нужно _точное_ количество посетителей онлайн? Если да, то зачем, какую задачу бизнеса это выполняет?
@akubintsev я вообще про хиты говорил, а не про дерганье сервера через ajax-запросы. Спасибо вы мне открыли глаза, пойду обратно разработчиком устроюсь.
@akubintsev я его достаточно внимательно прочитал. Кто вам мешает писать/обновлять пару id - timestamp по хитам? За последние n минут, за период информация (кто за этот период сделал хит) выдергивается элементарно.
Имхо, более правильный вариант в данном случае - допилить процедуру, чтобы можно было постранично считывать данные.