![]() |
Модераторы: Aliance, skyboy, MoLeX, ksnk |
![]() ![]() ![]() |
|
szz |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: 1 Всего: 33 |
Мне надобно написать свой веб-сервер, такой, который бы поддерживал PHP и все
![]() Думал, на чем его писать? На С++ переносимых (win/unix) решений не нашел, и решил писать... на PHP. Звучит абсурдно, но у меня получилось! Почти ![]() Вот как я провел эксперимент: создал папку "Comanche" (так я решил назвать свой сервер - в созвучность апачу ![]()
пишу потом в командной строке
и вижу в этом же черном окошке: Comanche started Потом запускаю браузер, захожу на "http://localhost:8080" И... о чудо! Вижу приветствие!!! Правда в сыром виде (Тэги <b> выпали как есть) Смотру в командную строку - вижу Replied to client 1 times В браузере пытаюсь снова зайти туда же... И браузер пишет "Соединение..." и "Невозможно отобразить..." А в командной строке - Replied to client 2 times! Опять рефрешу в браузере - "Невозможно отобразить..." В командной строке - Replied to client 3 times!!! Потом выключаю свой "сервер", в коде меняю порт (например на 8081), захожу с браузера по этому порту - и отять та же история - в первый раз отображается, в последующие - нет... Что это такое? Как заставить работать нормально? А также как мне достать строку запроса отправленную браузером (и ваще все хедеры, где перечисляются куки, юзер-агент и тд), чтоб соответствующим образом отреагировать? Это сообщение отредактировал(а) szz - 19.5.2006, 20:15 --------------------
|
||||||
|
|||||||
-=Ustas=- |
|
|||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: нет Всего: 69 |
Да ты шутник однако.... ну хоть посмеялся
![]() -------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
szz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: 1 Всего: 33 |
Не задо иронизировать
![]() ![]() ![]() Нет, я вот доведу свой Каманч до совершенства - тогда и посмотрим ![]() Я видимо то-то в конце недоделываю - может ответ на запрос как-то неверно завершаю... Там есть какое-то правило - когда я писал Каманч в C++Buildere (признаюсь, был грешок ![]() ![]() --------------------
|
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 5 Всего: 261 |
1. Комаче реальное ПО.
2. Задача - бред, по сути. Лучше силы потрать на что-то стоящее. Веб-сервер должен работать по принципу демона... |
|||
|
||||
szz |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: 1 Всего: 33 |
Я и не претендовал на уникальность - я не намерен свою прогу где-то публиковать - это для собственных нужд.
Во народ! Как будто я спрашивал "прастити, моя задача - не брееед?..." Я конкретный вопрос задал: "почему неверно завершается ответ на запрос".
Никто никому ничего не должен. Веб сервер обычно бежит как демон (сервис в Win), но вполне может бежать как и консольная прога, хоть как гуи. Главное что прога сокет серверный запускает и слушает. Да, я знаю что сервера на PHP не пишут, но у меня такая задача. Вот, я задал тот же вопрос на англоязычном форуме - мне сразу ответили "You have to unbind the port at the end of the response - I don't know haw to do that in PHP, but here is an example in C++:..." - он ни слова не сказал по поводу того, что задача моя - бред по сути. Просто ответил на вопрос. Тут никто(как и вы) не знал ответ на мой вопрос! И тем не менее НИКТО не зашел и не написал "это бред" - кроме одного человека, в подписе которго написано:
Это ты специально себя так ведешь, чтобы подпись на людях проверять? ![]() Сам посуди: спрашиваешь ты например на форуме "скоко будет дважды два?" а тебе ответают "Умножение чисел - бред по сути. Лучше потрать время на что-то другое." Или другой человек отвечает "будет 4". Без всяких комментариев - просто ответ. Надеюсь моя тирада поможет усовершенствовать вашу этику участия в форумах ![]() --------------------
|
||||||||||
|
|||||||||||
Mal Hack |
|
||||||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 5 Всего: 261 |
Да ты что? Гуй или консоль - это вид интерфейса программы.... Веб-сервер работает исключительно как ДЕМОН. Сам же пишешь: Как она тебе в консоли слушать будет, если не будет работать как демон? Да, 1 раз прослушает и все, что естественно. Терминологи знать надо.
Для начала, не мешало бы СУТЬ фразы понять... Если я тебе задачу поставлю изобрести колесо, будешь изобретать с помощью камня? Если я тебе задачу поставлю калькулятор на Алголе написать, будешь писать? Есть понятие реализма. Есть задачи, которые надо реализовывать с помощью нормальнызх средств, а не извращаться. ЗЫ: "Задача - бред" надо было понимать, как "Реализовывать задачу с помощью данной технологии - бред". Хотя и реализация самого веб-сервера на сегодняшней день ИМХО является не верной задачей. Лучше взять открыте исходняки Апача и подправить под себя, чем делать новое дырявое в корне ПО.
Утрировать не надо, пожалуйста.
У меня этика адекватная. Все претензии, пожалуйста сюда: http://forum.vingrad.ru/index.php?showtopic=55207 |
||||||
|
|||||||
szz |
|
||||||||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: 1 Всего: 33 |
Я уже разобрался - и написал свой http-сервер на php, который запускается из консоли и бежит в нем. Я прежде успешно писал веб-сервер на C++ Buildere, интерфейс которого был в гуи. Ну можно писать веб-сервер и запускать его из консоли или как гуи, можно, что я могу поделать, если это так? ![]() Что касается терминологий - демон - исключительно юниксовое понятие. В виндоуз аналог - сервис. Вот цитата из кюти:
А мой сервер можно запустить только если ты залогинен. Разлогинешся - он умирает. С терминами разобрались ![]()
Нее, отвечает браузеру - и дальше слушает - пока я ее не закрою или не разлогинюсь.
Если ты мне заплатишь за это столько сколько мои покупатели платят мне за мою прогу - с удовольствием напишу ![]()
Бесспорно (блин только заметил, что в слове "бесспорно" присутствует слово "порно" ![]() Хорошо, моя задача такова: Мне нужно написать переносимый (win/lin/mac) веб-сервер, который бы поддерживал php (mysql не нужен) и (самое главное!) запускался бы откуда угодно БЕЗ инсталляции, например записаный на CD (мне нужно запускать что-то вроде презентации, состоящей из пачки php-скриптов). Ну, вроде уже написал сервер на рнр, он вполне меня устраивает, зачем же омрачать это тем, что я нерационально подошел? Я уже записал его на СД с пачкой php-скриптов, которые мне нужны - все работает (там autorun - маленькая C++ прога, которая находит свободный порт после 8080, форкает мой консольный "сервер" слушать на этом порту и запускает браузер на http://localhost:8080)! Что, мне теперь это все выбросить, если тебе не нравится рациональность подхода? ![]() ![]() ![]()
С детства не люблю ябедничать ![]() Думаю это не настолько значительно - тем более каждый волен иметь свое мнение. Хотя, будь я не настолько уверен в своем, то твое "Задача - бред, по сути" (дя, разумется я это понял как как "Реализовывать задачу с помощью данной технологии - бред") могло меня сбить с панталыку и я бы сейчас не имел свое готичное решение ![]() Не, ты нормальный модератор, прсто иногда мне кажется не стоит быть столь категоричным к идеям людей, будь эти идеи даже бредовыми. Известно, что именно из бредовых идей рождается прогресс ![]() --------------------
|
||||||||||||||
|
|||||||||||||||
Mal Hack |
|
||||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 5 Всего: 261 |
Да, ты можешь писать его, как гуй или кмд, но если он не работает как демон (процесс, который постоянно висит в фоне, ждя определенных событий в системе, причем это не только никсовое понятие), то никакого веб-сервера ты не получишь, т.к. суть структурного программирования заключается в последовательном выполнении кода до его конца. Я не думаю, что PHP сделали таким образом, что он после запуска через cmd продолжает висеть в фоне (по крайней мере тот код, который я видел выше этого делать не будет)...
Я серьезно говорил, между прочим. Вот блин, так бы сразу, е-мое... Вот есть у тебя Апач, мискул и т.п. Уже настроены. Тебе нужно просто их запускать с флэшки или СД0РОМа. Апач, Мискул прекрасно работают без установки... Поверь, не только у тебя такая проблема стоит. http://wboard.ru/topic869.html?hl=LoadWebServer Насколько я помню, там не последняя версия. В последней уже вроде бы почти все работало. В то время из-за сессии не удалось до конца довести дело. Писал на C++ BDS 2006. Прогресс не рождается из преда. Прогресс рождается из-за разумной лени, и создании чего-то НОВОГО. |
||||
|
|||||
drupse |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 11.8.2009 Репутация: нет Всего: нет |
@zzz
Ideu tvou prekrasno ponyal. Nado lish' uchest' chto functia fork dlya processov podderjivaetsya tol'ko v *nix. t.e. skajem esli konnectitsya neskol'ko clientov (ili neskol'ko zaprosov s odnogo browsera, tak kak kajdyi zapros idet v svoem podprocesse u bol'shinstva internet browserov). Vozmojno poetomu on vydaval oshibku posle pervogo zaprosa. Ne znau stream_socket_accept() bejit v tom je potoke ili v otdel'nom. Interesno bylo by uznat' kak ty spravilsya s zadachei, tak kak seichas v dlya svuh ser'eznyh CMS Drupal & Wordpress pishetsya jabber server na php integrirovannyi s yadre s CMS. @Mal Hack Interesno chitat', udivlen byl uznav chto ty v moderatorah. (po suti ne posovetoval parnu nichego putnogo, krome pary obsheizvestnyh ponyatiy) |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
drupse, под смайлами возле поля ввода сообщения есть галочка "транслит". откорректируй, будь добр, свое сообщение: читать транслит - глаза ломать.
|
|||
|
||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 2 Всего: 43 |
Но ты выбрал наименеее подходящий ЯП(однопоточный), это неприменимо, если в скриптах будут выполняться длительные действия типа работы с сетью, БД и т.д. B прежде чем писать сервер под протокол, хотя бы охнакомился с базовыми особенностями протокола. Я ошибку исправил сразу. И тебе ее не скажу, т.к. дал всю информацию, как это сделать. В моем посте. Так что думай. |
|||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: нет Всего: 37 |
nerezus, за три-то года с момента создания темы уже всяко умер либо ишак, либо ходжа, либо эмир
![]() |
|||
|
||||
MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: нет Всего: 140 |
Ипатьев, тут не nerezus тему поднял а drupse, который кстати похоже и зарегистрировался тока из-за этой темы
![]() -------------------- Amazing ![]() |
|||
|
||||
Vampir41k |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 15.3.2009 Репутация: нет Всего: нет |
Mal Hack,
в linux php вполне подходит под определение типа пруфлинк: http://habrahabr.ru/blogs/php/40432/
php (cli) есть для этого, например я использую php для системного администрирования, а не для веб кодинга...
если допилять то может даже получиться веб сервер для нескольких посетителей-) ps стал некропостером((( Это сообщение отредактировал(а) Vampir41k - 12.8.2009, 03:31 |
||||||
|
|||||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 2 Всего: 43 |
Vampir41k, не надо отвкечать на цитаты 2006, человек тогда еще не разбирался в сабже =)
Кстати ты упускаешь тоже одну вещь: если оно запскается на никсе, то уже имеет все ПОЛНОЦЕННЫЕ средства демонизации типа запуска в фоне и т.д. |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Сеть | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |