![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| OverClocker |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 12.11.2005 Репутация: нет Всего: нет |
Здравствуйте, ребят!
Я конечно опять же хочу извиниться, если мой вопрос будет глупым, но всё же. Задачи две. Первая: написать робота для обычного Web-чата, который будет постоянно сидеть там. Вторая: написать сам чат, непрерывно обновляющийся и не тормозящий при большом кол-ве народа. И для той, и для другой задачи требуется написать даймон (демон). Как его писать средствами PHP - не знаю. Может Вы что-нибудь подскажете. На C++ не писал ничего ни для Юникса, ни для сети в целом... Так что лучший вариант для меня, это PHP в данном случае. |
|||
|
||||
| OverClocker |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 12.11.2005 Репутация: нет Всего: нет |
Никто не знает? Эх, обидно. Какую неделю уже ответ жду
|
|||
|
||||
| fara |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 15.3.2004 Где: С.-Петербург Репутация: нет Всего: 2 |
У PHPClub есть такой чат.
--------------------
Крыша хлопает в ладоши -Спасибо всем за план хороший! |
|||
|
||||
| AkimVital |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 25.11.2005 Репутация: нет Всего: нет |
Вообще, смутно еще представляю, какие задачи тут должен выполнять демон...
По поводу робота, если робот должен периодически кидать в общий рум какие-то месседжи, то действительно нужен демон, даже желательно вызываемый кроном. Даже такой можно написать на PHP, только как CGI модуль. Если же он просто должен отвечать на реплики пользователей в его адрес, то это может делать и скрипт, который принимает POST формы сообщения. Если в чате используется скрипт, выполняемый бесконечно (цикл while (1)), который проверяет, поступили ли новые сообщения (в базе данных) для текущего пользователя, и если поступили, то он пишет сообщение в буфер и выталкивает его (flush()), после - засыпает sleep(1) и по новой.... В таком случае можно создать переменную-хронометр, которая в каждой итерации цикла увеличивается на 1, и при достижении определенного значения или события обнуляется. Так ее значение равное 60, означает, что с момента ее обнуления прошла 1 минута, и значит можно кого-то запустить =)... А лучше всего, воспользоваться перлом... |
|||
|
||||
| OverClocker |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 12.11.2005 Репутация: нет Всего: нет |
Вот с этого момента можно по подробнее. У меня на хостинге таймаут есть, нужно его избежать... В общем нечто подобное... Демон должен принимать мессаги и тут же выдавать во фрейме диалога их. fara, Ты случайно не про chat.php.spb.ru? |
|||
|
||||
| Guest |
|
||||||||||
|
Unregistered |
на счет таймаута: пишешь
и он будет выполнятся пока сервер(апач) не оключится от пользователя.
далее делаем проврку (реализация как тебе удобней): если в базе данных-таблицы сообщений появилось сообщение с пометкой "новая" (true), тогда смотрим кто его получатель (из той же базы), и если это текущий пользователь (нужна глобальная переменная имени текущего поль-ля, по которому он авторизовался), тогда мы его(сообщение) выводим... сразу выталкиваем его пользователю функцией
далее
еще там же лучше всего сделать функциюю завершения - она вызовится по завершению работы скрипта, а значит - когда пользователь, почему-то, отключится (наприм. закрыл окно браузера).
если расскажешь в каком формате и фрме хранятся сообщения, тогда можна еще подробней. =) |
||||||||||
|
|||||||||||
| AkimVital |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 25.11.2005 Репутация: нет Всего: нет |
/\
|| случайно от гуеста написал =) в последнем коде в двух местах опечатка кавычек после переменной $USR. Это сообщение отредактировал(а) AkimVital - 6.12.2005, 00:34 |
|||
|
||||
| OverClocker |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 12.11.2005 Репутация: нет Всего: нет |
AkimVital, огромное тебе спасибо! Примного благодарен. Попробую протестировать код на хостере, надеюсь, что пренудительного таймаута там нет.
|
|||
|
||||
| mr.fox |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 298 Регистрация: 13.3.2005 Где: Ирландия Репутация: нет Всего: 2 |
так ты заснешь на 1 тысячную (помоему) секунду.. |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 8 Всего: 261 |
mr.fox не, именно секунда.
|
|||
|
||||
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 3 Всего: 55 |
Демон на PHP - извини, но изврат.
|
|||
|
||||
| OverClocker |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 12.11.2005 Репутация: нет Всего: нет |
Opik, посоветуй тогда другой язык. Но только мне придётся читать RTFM с нуля...
|
|||
|
||||
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 3 Всего: 55 |
OverClocker
У меня сейчас: демон на с++, модуль к апачу на с++ - для общения с демоном, ну и сам чат - PHP + JS |
|||
|
||||
| OverClocker |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 12.11.2005 Репутация: нет Всего: нет |
Opik, скажи, пожалуйста, с чего начать в написании програм для Web на C++? А то я даже не знаю, как этого демона потом запускать. Я так понял, что нужно зайти на шелл и что-то сделать. В общем, как прогу на C++ заставить работать на сервере? И, если можно, примерчик бы какой-нибудь....
|
|||
|
||||
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 3 Всего: 55 |
||||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Для профи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |