Модераторы: Aliance, skyboy, MoLeX, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Созда свой http-сервер (всесто апача) на PHP, эксперемент почти удался... 
:(
    Опции темы
szz
Дата 19.5.2006, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 1
Всего: 33



Мне надобно написать свой веб-сервер, такой, который бы поддерживал PHP и все smile 
   Думал, на чем его писать? На С++ переносимых (win/unix) решений не нашел, и решил писать... на PHP.
  Звучит абсурдно, но у меня получилось! Почти smile  
 Вот как я провел эксперимент:
создал папку "Comanche" (так я решил назвать свой сервер - в созвучность апачу smile  ) и скопировал туда файлы php.exe и php5ts.dll. Затем создал в этой папке php файл "runserver.php" и написал в нем:
Код
<?
$socket = stream_socket_server("tcp://127.0.0.1:8080", $errno, $errstr);
if (!$socket) {
  echo "$errstr ($errno)<br />\n";
} else {
    $count_replies=0;
    echo "Comanche started\n";
  while ($conn = stream_socket_accept($socket)) {
    $count_replies++;
    echo "Replied to client $count_replies times\n";
    fwrite($conn, "Hello from <b>Comanche</b> web-server!!!\n");
    fclose($conn);
  }
  fclose($socket);
}
?> 


пишу потом в командной строке
Код

php.exe -n runserver.php

и вижу в этом же черном окошке:
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


--------------------
PM   Вверх
-=Ustas=-
Дата 19.5.2006, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: нет
Всего: 69



Да ты шутник однако.... ну хоть посмеялся  smile  


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
szz
Дата 19.5.2006, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 1
Всего: 33



Не задо иронизировать  smile  smile  smile 
  Нет, я вот доведу свой Каманч до совершенства - тогда и посмотрим smile
 Я видимо то-то в конце недоделываю - может ответ на запрос как-то неверно завершаю... Там есть какое-то правило - когда я писал Каманч в C++Buildere (признаюсь, был грешок smile только вы не подумайте, что я маньячина везде веб-сервера писать smile -просто так судьба сложилась моя...) - там надо было что-то в конце сделать, после того как весь текст браузеру выдан -  только типа в этом случае браузер обрабатывает запрос как правильный. но что?...  Посоветуйте хотя бы где спросить?.. 


--------------------
PM   Вверх
Mal Hack
Дата 19.5.2006, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 5
Всего: 261



1. Комаче реальное ПО.
2. Задача - бред, по сути. Лучше силы потрать на что-то стоящее.

Веб-сервер должен работать по принципу демона... 
PM ICQ   Вверх
szz
Дата 20.5.2006, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 1
Всего: 33




Цитата
1. Комаче реальное ПО.

 Я и не претендовал на уникальность - я не намерен свою прогу где-то публиковать - это для собственных нужд.

Цитата
Задача - бред, по сути. Лучше силы потрать на что-то стоящее.

Во народ! Как будто я спрашивал "прастити, моя задача - не брееед?..."
  Я конкретный вопрос задал: "почему неверно завершается ответ на запрос". 

Цитата
Веб-сервер должен работать по принципу демона...  

    Никто никому ничего не должен. Веб сервер обычно бежит как демон (сервис в 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++:..." - он ни слова не сказал по поводу того, что задача моя - бред по сути. Просто ответил на вопрос.
  Тут никто(как и вы) не знал ответ на мой вопрос! И тем не менее НИКТО не зашел и не написал "это бред" - кроме одного человека, в подписе которго написано:
Цитата
Умение ОТКРЫТО дискутировать, не переходя на оскорбления и закулисные уколы, и возможно признать свою не правоту показывает СИЛЬНОГО человека. К сожалению, таких очень мало...


  Это ты специально себя так ведешь, чтобы подпись на людях проверять?  smile 

Сам посуди: спрашиваешь ты например на форуме "скоко будет дважды два?" а тебе ответают "Умножение чисел - бред по сути. Лучше потрать время на что-то другое."
   Или другой человек отвечает "будет 4".  Без всяких комментариев - просто ответ.  
 
Надеюсь моя тирада поможет усовершенствовать вашу этику участия в форумах  smile  


--------------------
PM   Вверх
Mal Hack
Дата 20.5.2006, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 5
Всего: 261



Цитата(szz @  20.5.2006,  13:53 Найти цитируемый пост)
   Никто никому ничего не должен. Веб сервер обычно бежит как демон (сервис в Win), но вполне может бежать как и консольная прога, хоть как гуи. Главное что прога сокет серверный запускает и слушает.  Да, я знаю что сервера на PHP не пишут, но у меня такая задача.


Цитата(szz @  20.5.2006,  13:53 Найти цитируемый пост)
Веб сервер обычно бежит как демон (сервис в Win)


Цитата(szz @  20.5.2006,  13:53 Найти цитируемый пост)
но вполне может бежать как и консольная прога, хоть как гуи.

Да ты что? Гуй или консоль - это вид интерфейса программы.... Веб-сервер работает исключительно как ДЕМОН. Сам же пишешь:

Цитата(szz @  20.5.2006,  13:53 Найти цитируемый пост)
Главное что прога сокет серверный запускает и слушает.

Как она тебе в консоли слушать будет, если не будет работать как демон?
Да, 1 раз прослушает и все, что естественно.

Терминологи знать надо.

Цитата(szz @  20.5.2006,  13:53 Найти цитируемый пост)
  Это ты специально себя так ведешь, чтобы подпись на людях проверять?  smile 

Для начала, не мешало бы СУТЬ фразы понять... 

Цитата(szz @  20.5.2006,  13:53 Найти цитируемый пост)
  Да, я знаю что сервера на PHP не пишут, но у меня такая задача.

Если я тебе задачу поставлю изобрести колесо, будешь изобретать с помощью камня?
Если я тебе задачу поставлю калькулятор на Алголе написать, будешь писать?
Есть понятие реализма. Есть задачи, которые надо реализовывать с помощью нормальнызх средств, а не извращаться.

ЗЫ: "Задача - бред" надо было понимать, как "Реализовывать задачу с помощью данной технологии - бред". Хотя и реализация самого веб-сервера на сегодняшней день ИМХО является не верной задачей. Лучше взять открыте исходняки Апача и подправить под себя, чем делать новое дырявое в корне ПО.

Цитата(szz @  20.5.2006,  13:53 Найти цитируемый пост)
Сам посуди: спрашиваешь ты например на форуме "скоко будет дважды два?" а тебе ответают "Умножение чисел - бред по сути. Лучше потрать время на что-то другое."

Утрировать не надо, пожалуйста.

Цитата(szz @  20.5.2006,  13:53 Найти цитируемый пост)
Надеюсь моя тирада поможет усовершенствовать вашу этику участия в форумах  smile   

У меня этика адекватная.
Все претензии, пожалуйста сюда: http://forum.vingrad.ru/index.php?showtopic=55207 
PM ICQ   Вверх
szz
Дата 21.5.2006, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 1
Всего: 33



Цитата

Гуй или консоль - это вид интерфейса программы.... Веб-сервер работает исключительно как ДЕМОН. 
Как она тебе в консоли слушать будет, если не будет работать как демон?
Да, 1 раз прослушает и все, что естественно.
Терминологи знать надо.

Я уже разобрался - и написал свой http-сервер на php, который запускается из консоли и бежит в нем. 
  Я прежде успешно писал веб-сервер на C++ Buildere, интерфейс которого был в гуи.
   Ну можно писать веб-сервер и запускать его из консоли или как гуи, можно, что я могу поделать, если это так? smile 
  Что касается терминологий - демон - исключительно юниксовое понятие. В виндоуз аналог - сервис. 
Вот цитата из кюти:
Цитата

A Windows service or Unix daemon (a "service"), is a program that runs regardless of whether a user is logged in or not. 

  А мой сервер можно запустить только если ты залогинен. Разлогинешся - он умирает. С терминами разобрались  smile 

Цитата

Да, 1 раз прослушает и все, что естественно.

  Нее, отвечает браузеру - и дальше слушает - пока я ее не закрою или не разлогинюсь.

Цитата

Если я тебе задачу поставлю изобрести колесо, будешь изобретать с помощью камня?
Если я тебе задачу поставлю калькулятор на Алголе написать, будешь писать?

   Если ты мне заплатишь за это столько сколько мои покупатели платят мне за мою прогу - с удовольствием напишу smile    

Цитата

Есть понятие реализма. Есть задачи, которые надо реализовывать с помощью нормальнызх средств, а не извращаться.

ЗЫ: "Задача - бред" надо было понимать, как "Реализовывать задачу с помощью данной технологии - бред". Хотя и реализация самого веб-сервера на сегодняшней день ИМХО является не верной задачей. Лучше взять открыте исходняки Апача и подправить под себя, чем делать новое дырявое в корне ПО.

    Бесспорно (блин только заметил, что в слове "бесспорно" присутствует слово "порно" smile ), это рациональный подход. Я полазил по исходникам апача - очень сложный проект, я его признаться, не осилил, вот и пошел искать решение попроще.

    Хорошо, моя задача такова:
  Мне нужно написать переносимый (win/lin/mac) веб-сервер, который бы поддерживал php (mysql не нужен) и (самое главное!)  запускался бы откуда угодно БЕЗ инсталляции, например записаный на CD (мне нужно запускать что-то вроде презентации, состоящей из пачки php-скриптов).

 Ну,  вроде уже написал сервер на рнр, он вполне меня устраивает, зачем же омрачать это тем, что я нерационально подошел? Я уже записал его на СД с пачкой php-скриптов, которые мне нужны - все работает (там autorun - маленькая C++ прога, которая находит свободный порт после 8080, форкает мой консольный "сервер" слушать на этом порту и запускает браузер на http://localhost:8080)!  Что, мне теперь это все выбросить, если тебе не нравится рациональность подхода?  smile  smile  smile 

Цитата
Все претензии, пожалуйста сюда: http://forum.vingrad.ru/index.php?showtopic=55207  


   С детства не люблю ябедничать smile    
  Думаю это не настолько значительно - тем более каждый волен иметь свое мнение.  Хотя, будь я не настолько уверен в своем, то твое "Задача - бред, по сути" (дя, разумется я это понял как как "Реализовывать задачу с помощью данной технологии - бред") могло меня сбить с панталыку и я бы сейчас не имел свое готичное решение  smile 
   Не, ты нормальный модератор, прсто иногда мне кажется не стоит быть столь категоричным к идеям людей, будь эти идеи даже бредовыми. Известно, что именно из бредовых идей рождается прогресс smile 


--------------------
PM   Вверх
Mal Hack
Дата 21.5.2006, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 5
Всего: 261



Цитата(szz @  21.5.2006,  22:25 Найти цитируемый пост)
 Ну можно писать веб-сервер и запускать его из консоли или как гуи, можно, что я могу поделать, если это так? smile 

Да, ты можешь писать его, как гуй или кмд, но если он не работает как демон (процесс, который постоянно висит в фоне, ждя определенных событий в системе, причем это не только никсовое понятие), то никакого веб-сервера ты не получишь, т.к. суть структурного программирования заключается в последовательном выполнении кода до его конца.
Я не думаю, что PHP сделали таким образом, что он после запуска через cmd продолжает висеть в фоне (по крайней мере тот код, который я видел выше этого делать не будет)...


Цитата(szz @  21.5.2006,  22:25 Найти цитируемый пост)
Если ты мне заплатишь за это столько сколько мои покупатели платят мне за мою прогу - с удовольствием напишу smile    

Я серьезно говорил, между прочим.

Цитата(szz @  21.5.2006,  22:25 Найти цитируемый пост)
Мне нужно написать переносимый (win/lin/mac) веб-сервер

Вот блин, так бы сразу, е-мое...
Вот есть у тебя Апач, мискул и т.п. Уже настроены. Тебе нужно просто их запускать с флэшки или СД0РОМа. Апач, Мискул прекрасно работают без установки...
Поверь, не только у тебя такая проблема стоит.
http://wboard.ru/topic869.html?hl=LoadWebServer
Насколько я помню, там не последняя версия. В последней уже вроде бы почти все работало. В то время из-за сессии не удалось до конца довести дело.
Писал на C++ BDS 2006.

Цитата(szz @  21.5.2006,  22:25 Найти цитируемый пост)
Известно, что именно из бредовых идей рождается прогресс smile  

Прогресс не рождается из преда. Прогресс рождается из-за разумной лени, и создании чего-то НОВОГО. 
PM ICQ   Вверх
drupse
Дата 11.8.2009, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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)






PM MAIL   Вверх
skyboy
Дата 11.8.2009, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



drupse, под смайлами возле поля ввода сообщения есть галочка "транслит". откорректируй, будь добр, свое сообщение: читать транслит - глаза ломать.

PM MAIL   Вверх
nerezus
Дата 11.8.2009, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 2
Всего: 43



Цитата

  Думал, на чем его писать? На С++ переносимых (win/unix) решений не нашел
 Искал плохо.

Но ты выбрал наименеее подходящий ЯП(однопоточный), это неприменимо, если в скриптах будут выполняться длительные действия типа работы с сетью, БД и т.д.

B прежде чем писать сервер под протокол, хотя бы охнакомился с базовыми особенностями протокола.

Я ошибку исправил сразу. И тебе ее не скажу, т.к. дал всю информацию, как это сделать. В моем посте.
Так что думай.



--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Ипатьев
Дата 11.8.2009, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: нет
Всего: 37



nerezus, за три-то года с момента создания темы уже всяко умер либо ишак, либо ходжа, либо эмир smile
PM MAIL   Вверх
MoLeX
Дата 11.8.2009, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: нет
Всего: 140



Ипатьев, тут не nerezus тему поднял а drupse, который кстати похоже и зарегистрировался тока из-за этой темы  smile 


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Vampir41k
Дата 12.8.2009, 03:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 15.3.2009

Репутация: нет
Всего: нет



Mal Hack
Цитата

демон (процесс, который постоянно висит в фоне, ждя определенных событий в системе, причем это не только никсовое понятие)

в linux php вполне подходит под определение
типа пруфлинк: http://habrahabr.ru/blogs/php/40432/
Цитата

Я не думаю, что PHP сделали таким образом, что он после запуска через cmd продолжает висеть в фоне 

php (cli) есть для этого, например я использую php для системного администрирования, а не для веб кодинга...

Цитата

по крайней мере тот код, который я видел выше этого делать не будет


если допилять то может даже получиться веб сервер для нескольких посетителей-) 



ps стал некропостером(((

Это сообщение отредактировал(а) Vampir41k - 12.8.2009, 03:31
PM MAIL WWW ICQ   Вверх
nerezus
Дата 12.8.2009, 04:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 2
Всего: 43



Vampir41k, не надо отвкечать на цитаты 2006, человек тогда еще не разбирался в сабже =)
Кстати ты упускаешь тоже одну вещь: если оно запскается на никсе, то уже имеет все ПОЛНОЦЕННЫЕ средства демонизации типа запуска в фоне и т.д.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Сеть | Следующая тема »


 




[ Время генерации скрипта: 0.1008 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.