Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы (http://www.flasher.ru/forum/forumdisplay.php?f=10)
-   -   Socket server (http://www.flasher.ru/forum/showthread.php?t=31268)

lizergil 08.05.2002 05:43

Socket server
 
Если socket server написан на Perl или PHP, который обрабатывает заросы, как заставить его работать постоянно?

Parafly 08.05.2002 11:15

Они не только обрабатывают запросы. Программа как программа. Работает на сервере.

lizergil 10.05.2002 03:10

как она постоянно работает, если это скрипт :confused: :confused: :confused: его же пользователь вызывает

Parafly 12.05.2002 13:53

CGI - Common Gateway Interface
Способ удалённо запускать программы. Хочешь - запускай сам, на сервере.

lizergil 12.05.2002 17:17

Я говорю совершенно не про это, но я разобрался. :D :D :D

G.W.M 04.10.2003 16:56

pomagi mne esli est sorsi socket servera na PHP
i raskazi kak ze zapuskaetsa atot server vet on kak sam skazal script a ia znau tolka chto skripti bezat poka uzer ih zaprachivaet...???

Dr.OH 12.07.2004 11:24

lizergil, сам научился, научи других. Коим образом сокет-сервер запускается в качестве сервиса на сервере.
И еще вопросик на тему: в Apache или PHP настраивать ничего не надо для работы XMLSocket? а то у меня вроде все коннектится, socket_accept проходит, а при чтении socket_read ничего не возвращает... в смысле, прочитанная строка пустая, что бы я туда не отправлял.
Заранее спасибо.

kazakov_gin 12.07.2004 12:22

Дайте мне сокет-сервер на пхп, плз.

Nucer 12.07.2004 16:42

Можно заставить работать скрипт постоянно (пока его не выключит PHP из-за превышения максимального времени), но он по любому будет отдельный для каждого юзера.
2 Dr.OH Настраивать вроде ничего не надо, скорей всего просто читаешь не правильно.

Dr.OH 13.07.2004 00:38

Вложений: 1
Nucer, а как происходит первоначальный запуск скрипта? Ведь надо, чтобы он слушал порт в момент захода первого пользователя и выгружался после ухода последнего.
как это сделать, где и что надо прописать?

так, и теперь сам сервер, что именно я не правильно читаю? плиз, объясните как надо?

Dr.OH 14.07.2004 00:29

во, классно, понакачали файл и ни одного комментария не оставили... жду комментариев по поводу "как правильно"

kazakov_gin 14.07.2004 11:16

2Dr.OH
Цитата:

Opening a socket at 127.0.0.1 : 2539.
Fatal error: Call to undefined function: socket_create() in w:\home\localhost\www\sock\server_my.php on line 39
Fatal error: Call to undefined function: socket_close() in w:\home\localhost\www\sock\server_my.php on line 24
Что делать?
у меня: Apache 1.3.27 и PHP 4.3.0.
Это ты брал с http://phpclub.net/ ?
если нет, то вот кусок кода с чтением от туда
Код:

if (FALSE === ($buf = socket_read ($msgsock, 2048))) {
echo "socket_read() failed: reason: " . socket_strerror ($ret) . "\n";
break 2;
}


Dr.OH 14.07.2004 11:43

у меня стоит Apache2 и PHP5... в более ранних версиях функции socket_create и socket_close заменяются на просто create и close соответственно.
Спасибо за код, сейчас буду разбираться.

И еще раз повторю вопросик #2. Как скрипт-то сам запускать?

Dr.OH 14.07.2004 11:44

Цитата:

socket_read() failed: reason: Неверная функция.
Это как???

kazakov_gin 14.07.2004 12:20

2Dr.OH
Цитата:

Это как???
Ну убери ту строчку да и всё.
Что касается вопроса №2:
Я делаю интернет-шахматы, по идее тот кто играет белыми должен запускать скрипт, потом сам подключаться к сокету и другой тоже.

kazakov_gin 14.07.2004 12:53

изменил socket_create на create, но теперь ошибка "Fatal error: Call to undefined function: create()"
Цитата:

Ну убери ту строчку да и всё.
Что-то я совсем не соображаю :p
Ты откуда брал инфу?
Мне один знакомый посоветовал книгу "Flash&XML Руководство по разработке" Д.Джекобсон. говорит, что там подробно написано как всё сделать и есть коды севера на пхп.
Ты нигде не видел такую?

Dr.OH 14.07.2004 15:33

как ее убрать... в смысле в чем тогда прикол скрипта будет, если он ничего читать не будет?

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

Nucer 15.07.2004 00:46

Во-первых, не какую строчку убирать не надо. Надо раскомментить php_sockets.dll (или типа того) в конфиге.
Во-вторых, сокеты на PHP не выполняют той функции, которую выполняют в серьёзных языках, так что нормальную клиент-серверную игру на PHP не сделаешь.

Dr.OH 15.07.2004 00:57

строчку в extensions в php.ini для подключения php_sockets.dll я раскоментировал, иначе вообще ни одна функция не работала бы...
Оно просто обязано работать! Ведь как-то все эти функции при создания тестировались. для чего тогда во Flash'е целый класс создан XMLSocket, ведь не для крутизны, как-то он работать должен!

я смотрел по темам, все говорили, "все, спасибо, я разобрался, все сделал" ну.. и как же все всё сделали???

Dr.OH 15.07.2004 01:29

только что прочитал как правильно передавать данные к скрипту.. в общем функция socket_read ожидает строку с последним нулевым символом. Чтобы это обойти надо либо его добавлять ко всем сообщениям, либо ставить в качестве третьего параметра к socket_read PHP_BINARY_READ (первый способ почему-то пока что не работает)

Dr.OH 15.07.2004 22:38

в общем я практически все сделал.. в смысле пишет и читает... единственное, что следует отметить чтение удалось реализовать только при помощи функции int socket_recv ( resource socket, string &buf, int len, int flags) с socket_read у меня отношения не сложились.

Дело за малым, как запускать скрипт в виде сервиса???

Dr.OH 16.07.2004 15:10

блин, ну что, никто не знает??? столько ... с этим скриптом, чтобы потом обломаться о самое простое??? heeeelp!

Nucer 16.07.2004 16:18

Да никак. Тем более ни один хостинг тебе не дал бы этого делать, даже если б можно было.

kazakov_gin 16.07.2004 17:38

2Dr.OH
Я скачал пхп5. Можешь дать сервер, где нормально читается, плз.
Попробуй обратиться к alex100 (он делал игру на сокетах)
Я правда от него мало, что узнал. может тебя он лучше поймёт.
Зайди в асю.

kazakov_gin 16.07.2004 17:53

Нашёл про запуск скриптов по времени:
Цитата:

CRON - средство выполнять регулярные действия на серверах типа Unix. В Windows крон называют шедулером. Суть одна: делаем правила срабатывания крона, например раз в 2 минуты или в 23:59 по четвергам, и что делать, например запустить php-программу (чтобы та делала нужную работу). В форуме часто возникает вопрос "как делать что либо регулярно?". Именно крон решает эту проблему.
Ещё можно почитать здесь

Nucer 16.07.2004 18:53

Крон и служба - это абсолютно разные вещи.

kazakov_gin 16.07.2004 19:49

Ну и что, что разные вещи.
Разве это не выход из положения?
каждые n- секунд/минут прослушивать сокет?

Nucer 16.07.2004 21:27

Ну и что, что работает. Ты собрался запускать свой скрипт на солокэйшене? Видел сколько на одно соединение оперативы нужно? Ещё раз говорю, не занимайтесь фигнёй, только зря время потратите. Хотя конечно, дело ваше. :)

Dr.OH 16.07.2004 23:40

Nucer, lf, полностью с стобой согласен, на народе чат делать бесполезно, но, ты знаешь, есть много других хостеров.
По поводу оперативки. Для этого используется функция sleep. У меня нагрузка на проц примерно 5% при 20 пользователях. Не знаю много это или мало, но вот у меня вот так.


kazakov_gin
Спасибо за поддержку. На сервере, который использую я есть CRON, т.е. скрипты такие можно ставить. Но это на крайний случай.
У меня тут появилась одна идея. А что если сделать немного по другому. Т.е. заходит какой-то пользователь и при помощи, например, функции XML.sendAndLoad обращается к странице со скриптом. Ответа он естественно не получит, но это и не важно. Т.о. мы запускаем скрипт. Все остальные пользователи при заходе просто проверяют некий диапазон портов на "открытость", если все порты закрыты они выполняют sendAndLoad, если открыты происходит проверка на принадлежность порта (чтобы случайно не вломиться туда, куда не надо) и работают.
Единственное, над чем надо еще подумать, как поддерживать порт в работоспособном состоянии. Т.е. если выходит пользователь, открывший порт и скрипт прекращает работу.
Да, а сервер у меня обыкновенный - Apache 2.0.46-win32 с "одноименного" сайта.

Dr.OH 18.07.2004 00:53

http://www.electrotank.com/electroserver/index.aspx
если кому интересно...

alex1000 18.07.2004 03:48

Тут Dr.OH меня спрашивал "кто запустит сокет?". Оказывается проблема совсем не в этом,
а проблема в живучести сокета! Пусть kazakov_gin на меня не обижается, сам же прервал переписку,
может и договорились бы до чего дельного. Мое видение проблемы (подвожу медленно):
- пусть все без этих сокетов, тогда все сливают и получают инфу из хранилища, каждый своим
экземпляром скрипта...вроде все нормально работает.
- пусть теперь приспичило на сокетах, но проблема - тот кто затеял разговор утомился и пошел

баеньки, а остальные ? а остальные уже без него (без сокета) никуда, начинай все сначала и
целый кусок беседы в ведро!
Дак я и говорю, что надо бы сохранять "базар", к примеру 20 последних сообщений где нибудь
в хранилище, хоть в общей сесии, и тогда когда скрипт, родивший общий сокет, умрет, то другой
скрипт, обнаружив это, родит нового сокета.

Из такой картины, действительно, ставится под сомнение использование сокетов для чата,
ведь все равно клиент получает инфу по собственному запросу...вот если бы сервер обновленную
инфу ему, как в "пуш"-технологии сам впихивал, т.е. без запроса, тогда да, было бы здорово!

alex1000 18.07.2004 03:53

Был я на http://www.electrotank.com/electroserver/index.aspx
хоть и слав в английском, но понял, что серверок ихний на джава работает, а где возьмем такого хостера...или все они за! только предложи...просвятите...плз.

Dr.OH 18.07.2004 15:02

сервер с сылки я не стал устанавливать... руки до него не дошли. Зато я сделал, как хотел. Когда первый пользователь заходит, скрипт начинает работать, сокет открывается и работает до тех пор, пока от сокета не отсоединиться последний пользователь. Сейчас отлаживаю, пытаюсь сделать регистрацию, оформить дизайн и т.д. :) Все оказалось ооочень просто... даже никакой Cron не понадобился ;P

Nucer 18.07.2004 16:07

Извращение какое то этот электросервер. Серверную часть нужно делать на серьёзном языке, точно не на скриптовом.

kazakov_gin 18.07.2004 19:31

2Dr.OH
Я за тебя очень рад! Дак может даш мне сервер, который нормально читает?
2Alex
Моё решение проблемы с сохранением "базара" ;) :
Все посты хранятся у каждого чувака, то есть, кто-то написал что-то, это что-то передалось всем кто в чате и добавилось к ним в тектовое поле к остальным постам. таким образом "в ведро" ничего не попадает, пока ты не закроешь чат.
Может не очень понятно объяснил, когда сам до конца разберусь, сделаю чат и пошлю в исходники.
А как ты предлагаешь его запустить?

Dr.OH 18.07.2004 23:06

Вложений: 1
...лана, уговорили :)
открывается очень просто XML.sendAndLoad(server_name, "GET" или "POST")

alex1000 19.07.2004 07:58

Я так и не понял, парни, чем дело то закончилось....
вроде была проблемка...и рассосалась...пшик и нету...
мне бы так.

kazakov_gin 19.07.2004 09:54

2Dr.OH
благодарю.
2Alex
И такое бывает :p

Dr.OH 19.07.2004 10:38

...теперь дело за малым... заставить все это чудо работать на реальном сервере :(

kazakov_gin 19.07.2004 12:06

У меня приходящие сообщения все большими буквами. как это исправить?


Часовой пояс GMT +4, время: 04:52.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.