Если бы HTML 5 был запущен и работал, вы бы хотели использовать для этого сокетное соединение с вашим сервером (вы можете сделать это уже с Flash). По сути, на вашем сервере всегда будет работать скрипт-демон, который будет прослушивать определенный сокет и вести список подключенных пользователей, затем, когда на сервер сокетов отправляется сообщение от одного из подключенных пользователей Сервер сокетов проанализирует сообщение и отправит его соответствующим подключенным пользователям. Таким образом, ничего слишком большого не нужно хранить в памяти. Он получит и немедленно отправит обратно сообщения.
Клиент обычно создает постоянное соединение с сервером сокетов и имеет обработчик для получения сообщений, отправленных демоном сервера. Серверные демоны могут быть запущены PHP через командную строку (чтобы он всегда работал и не прерывался). Вы хотели бы создать сценарий оболочки init для своего сервера, который запускает скрипт PHP-демона при загрузке. Вам также потребуется доступ к сокетам из вашего PHP-скрипта (который не разрешен на большинстве общих серверов), то есть вам, вероятно, понадобится VPS (виртуальный частный сервер).
Это та вещь, к которой нас приведет HTML5, но лучше всего пока использовать Flash (или использовать один из менее эффективных методов, который не является действительно асинхронным). Это большой вопрос, поэтому я не могу вдаваться в подробности, но могу, по крайней мере, указать вам правильное направление. Вероятно, есть примеры этого где-то в Интернете.