Чат с непрерывной загрузкой, 2 пользователя. Вопрос о нагрузке на сервер.

Gendo

Guest
Чат с непрерывной загрузкой, 2 пользователя. Вопрос о нагрузке на сервер.

Если не вдаваться в подробности, моя задача - написать чат. Большую часть времени в чате не будет никого, раз в несколько дней будет два пользователя. Большее число возможно - но я думаю это произойдет только если какой-нибудь злобный хакер предпримет атаку.

Вся система уже написана со скрытым рефрешем. Кочу сделать непрерывную загрузку.

Насколько я понимаю, если не учитывать злобного хакера, то вариант, когда для каждого юзера запускается свой скрипт с max_execution_time=0 будет даже экономичнее, чем постоянно работающий демон. Еще более выгодный вариант - запуск демона по запросу первого юзера, но он мне кажется неоправдано сложным (из-за необходимости писать демона).

На моём хостинге set_time_limit() работает. Есть ли какие-нибудь еще ограничения - проверю в ближайшее время.

Итак, вариант №1:
Каждому юзеру по скрипту. Скрипт проверяет есть ли мессаги в БД, если есть - отдает их браузеру, sleep(1), и так далее пока есть соединение с браузером. Количество юзеров ограничим 10-ю.

вопрос 1
Слышал что в этом случае для каждого скрипта будет висеть в памяти копия apache. Подскажите, насколько это "вредно" для сервера? При скачивании файлов происходит то же самое? Скажем, 5 потоков - это 5 апачей?

вопрос 2
Что думаете о моем варианте? Есть варианты лучше? JSP, TCL? По возможности, хотелось бы сделать "экспортный", универсальный скрипт, чтобы он мог работать на большенстве хостингов. Я кроме PHP других технологий не знаю, но можно найти специалистов.
 

svetasmirnova

маленький монстрик
Вариант с max_execution_time=0 на большинстве хостингов работать не будет
 

Tyler Durden

Guest
Напиши демон на PHP и запускай его из шелла (если у твоего провайдера есть SSH)

php -f файл_демона.php &

Пусть этот демон получает запросы от броузеров и выводит в ответ необходимые данные. И никаких висящих в памяти apacheй...

Пишешь бесконечный цикл, а в нем - ожидание соединений...

PHP:
socket_create(...);
socket_set_option(...);
socket_bind(...);
socket_listen(...);
set_time_limit(0);
while(true)
{
	socket_select(...); /*ждем изменения в сокете*/
	/*тут выполняется обработка входящих данных*/
}
Вот и весь демон... ;) Эта тема обсуждалась много раз. И инфы найти мона до фига!
 
Сверху