Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

php: как делают чаты?

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Создание веб-сайтов
Предыдущая тема :: Следующая тема  
Автор Сообщение
droopy



Зарегистрирован: 28.07.2004
Сообщения: 168

СообщениеДобавлено: Пт Июл 30 2004 13:24    Заголовок сообщения: php: как делают чаты? Ответить с цитатой

Собственно проблема в том как пхп увидеть html объект
такой как инпут, кнопка. С кнопкой все в порядке. Я могу например
повесить ее на onClick а затем туда поместить код пхп.
А как бать с инпутом. Как пхп увидеть его. и получить value.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Marmota Bobak



Зарегистрирован: 28.07.2004
Сообщения: 68

СообщениеДобавлено: Пт Июл 30 2004 19:37    Заголовок сообщения: Ответить с цитатой

я не понял, в чем проблема? то есть как получить? а почему нельзя через форму post'ом?????
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
droopy



Зарегистрирован: 28.07.2004
Сообщения: 168

СообщениеДобавлено: Пт Июл 30 2004 20:03    Заголовок сообщения: Ответить с цитатой

Тогда ведь будет релоад. А надо чтобы его не было.
Или как-то отправить форму без релоада. ТОлько как?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
napalm
Гость





СообщениеДобавлено: Сб Июл 31 2004 14:33    Заголовок сообщения: Ответить с цитатой

PHP - на сервере javascript в Броузере и по другому никак! Один фрей должен выводить написанное и через некот. время перезагружаться автоматическм а в дугом фрейме форма ввода
Вернуться к началу
Marmota Bobak



Зарегистрирован: 28.07.2004
Сообщения: 68

СообщениеДобавлено: Пн Авг 02 2004 10:13    Заголовок сообщения: Ответить с цитатой

napalm совершенно прав - PHP ведь работает только на стороне сервера, ты НИКАК не сможешь его выполнить без обращения клиента к серваку, то есть без перезагрузки браузера..... Пришла еще одна извращенная идея (она без фреймов, но совсем извращенная =) - при обращении к серваку открывать новое окно, чтобы старое не перезагружать и там выполнять PHP, а потом яваскриптом передавать результат в старое окно и обновлять чат локально у клиента. Еще один вариант - передавать на сервер сразу весь текст (+"переменные состояния" чата, если надо) и потом его заново выводить, на представляешь себе нагрузку на сервак? (и на клиента, кстати, тоже)!
Короче, вариант с фреймами мне привлекательнее
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
droopy



Зарегистрирован: 28.07.2004
Сообщения: 168

СообщениеДобавлено: Ср Авг 11 2004 15:16    Заголовок сообщения: Ответить с цитатой

А как конкретно это сделать?
Вот такой вариант не пишет ничего в файл.
<html>
<head><script>
function submit()
{
window.frames[0].src = "chat.php";
window.location.href = "index.html";
}
</script></head >
<body>
<iframe height=0 src="chat.php"></iframe>
<form onSubmit="submit()">
<input name="text" type=text size=30>
<input type=submit value="написать">
</form>

</body>
</html>
chat.php:
<?
$file = fopen( "chat.dat", "w+t" );
flock( $file, LOCK_EX );
fputs( $file, $text );
fclose( $file );
?>
как сделать?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Almaz



Зарегистрирован: 13.08.2004
Сообщения: 45

СообщениеДобавлено: Пт Авг 13 2004 06:13    Заголовок сообщения: Ответить с цитатой

А вот нашел еще опять этот топик только в другом форуме.
Здесь более понятно что к чему.

Совсем ничего не перегружать конечно не получится, но можно сделать чтобы это меньше всего влияло на систему.
Если ты делаешь чат, то по технологии тебе нужно как минимум 3 фрема, а лучше 5 Smile
--------------------
| 1 |
| |
===========
| 2 |
--------------------
| 3 |
--------------------

1 (1.php) (name="frm_1") - это собственно фрейм отображения мессаг.
2 (2.php) (name="frm_2")- это маленький фреймик (он то и будет перегружатся при отправке мессаги).
3 (3.php) (name="frm_3")- фрейм в котором будет располагатся формочка ввода.

трейтий фрейм будет выглядить по простому примерно так:
<form action="2.php" method=POST target="frm_2">
<input type="text" name="msg">
<input type="submit" value="Отправка">
</form>

таким образом когда юзер написшет мессагу и отправит данные во фрейм 2, скрипту 2.php, и этот скрипт в свою очередь получит переменную msg в которой будет тот текст который набрал юзер, и соответственно запишет этот текст в файл.
А 1 фрейму надо обращатся к этому файлу и выводить сообщения.
Как сделать чтобы при выводе фрейм не обновлялся, это уже другой вопрос, но варианты есть.


P.S.: во втором фрейме можешь выводить что то типа "Ваша мессага отправлена" после его релоада, это будет почти не заметно.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Гость
Гость





СообщениеДобавлено: Ср Дек 01 2004 10:48    Заголовок сообщения: Ответить с цитатой

Дык, товарищи, все просто! В опциях апача есть строчка - максимальное время выполнения скрипта. СТавим там максимально возможное значение. Далее во фрейме с выводом мессаг просто каждые скажем пол секунды проверяем файл, в который записываются мессаги. Собсно все просто Wink
Вернуться к началу
Moby



Зарегистрирован: 19.11.2004
Сообщения: 268

СообщениеДобавлено: Пт Дек 03 2004 17:46    Заголовок сообщения: 2Гость. не всё так просто Ответить с цитатой

Грабли №1. всё то время которое выполняеца скрипт - он висит в памяти сервера и жрёт серверные ресурсы. сколько пользователей в чате - столько и версий скрипта будут хавать ресурсы сервера.

Грабли №2. что то мне подсказывает, что нифига не будет таким макаром. точнее идея конечно заслуживает внимание - постоянный коннект, но не такими методами что ты предлагаешь. варварский он какой то.

теперь не грабли а реализация (так как я это делаю):
Фрейм1 - фрейм куда выводим сообщения
Фрейм2 - фрейм где наша форма ввода сообщения (таргетим её на третий фрейм)
Фрейм3 - невидимый фрейм, который принимает сообщения и пихает их куда следует (например в базу или в файл). и этот же фрейм выводит _новые_ сообщения в видимый фрейм путём яваскрипта.

в принципе, на сколько я понимаю - это класическая схема чата, но опять таки, все мои попытки реализации этой схемы приводили к тому, что чат хавает много серверных ресурсов при аудитории в 20-30 человек. хотя можа это у миня проста лапы кривые
_________________
Профи - это оборзевший ламмер
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Создание веб-сайтов Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...