2010-02-02 3 views
0

если я пишу комету push с php, но использую этот код на java-сервере через quercus, это решит проблему одного процесса на запрос, который apache имел и хорошо масштабировал с множеством пользователей, использующих мой чат?php комета с quercus

+0

Из любопытства вы изучили идею использования libpurple и решения XMPP? Я не уверен, что он устраняет узкое место в Apache, но я рассматривал такое решение для своей собственной ситуации и хотел бы знать, что вы изучили, чтобы иметь что-то почти живое. – Anthony

+0

Я немного читал о libpurple. кажется, что пользователь должен будет использовать свою учетную запись hotmail или gmail в чате. я просто хочу, чтобы чат в моем форуме с их идентификатором форума, поэтому я не думаю, что это подходит для меня. и вы должны использовать c/C++ для его реализации? – ajsie

ответ

1

Ну, Quercus работает на (J) VM, поэтому он может работать с другим кодом, который может запускать потоки. Но зачем вам нужны темы для общения? Вы просто устанавливаете таймаут на ванильном PHP-запросе на 0 (без тайм-аута) и дождитесь, когда там будет что-то, чтобы отправить обратно пользователю.

Что-то еще будет в ответ на чужой запрос (то есть A говорит «привет», что прерывает ожидание B, чтобы что-то произошло). Это не требует многопоточности.

Также вы можете продолжать использовать Apache/PHP и выполнять вышеуказанное и вместо этого подключаться к службе Java (или другому) с помощью чего-то вроде XML RPC, который может ждать вечно. Этот сервер может выполнять несколько потоков или делать все, что ему нужно.

+0

Я читал об этом, если вы реализуете комету с apache, то если у вас 5000 пользователей, apache создаст 5000 активных процессов, которые потребляют много памяти и процессора. представьте, что произойдет с вашим веб-сервером, если вы одновременно получите 100 000 пользователей. а затем кто-то сказал, что с java (языком и сервером), даже если у вас запущено 100 000 пользователей, процессы для пользователей, которые ничего не отправляют, будут «в состоянии сна», а только активные процессы потребляют CPU и ram. исправьте меня, если я ошибаюсь, и было бы полезно, если бы вы могли разработать эту концепцию для меня. – ajsie

+0

, так что мне интересно, если я использую свой код кометы php на java-сервере с quercus (который я успешно выполнил) будет ли это решить эту проблему с процессом Apache и поставить неактивные процессы во сне? – ajsie

+0

@noname: процессы кометы - это открытые соединения и выполнение кода, независимо от языка. Теперь вы можете утверждать, что накладные расходы ниже в байт-коде Java. Я не могу сказать, если это так или нет, или в какой степени. Но эти открытые соединения будут потреблять ресурсы, и принципиально нет никакой разницы в спящих процессах. PHP может выполнять операцию блокировки и спать так же, как Java. Кроме того, у вас действительно будет 100 000 пользователей? Почему бы не построить проблемы, которые у вас есть, а не те, которые вы хотели бы иметь? – cletus

2

Да, Quercus решает один процесс за запрос узкого места Apache. Однако вам необходимо понять возможные узкие места JVM. На мой взгляд, вы должны написать сервис или приложение на C/C++, используя что-то вроде libevent, в Erlang, в Google Go или просто как сервлет Java просто для мобильности.

+0

, пожалуйста, прочитайте мой комментарий на вопрос cletus. я действительно должен знать, будет ли это работать, и что сервер не будет зависать с большим количеством пользователей в чате. – ajsie

+0

Отвечено на вопрос cletus '! –

Смежные вопросы