![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: нет Всего: 122 |
Дароф
интересует вопрос - "Как написать веб сервис, который бы слушал конкретный порт и получал пакеты для обработки?" Сейчас пока выкручиваюсь так что запускаю PHP.EXE + скрипт для обработки входящего пакета. но это временное решение и интересует как мне это сделать программно? Сенкс |
|||
|
||||
Vasay |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: 1 Всего: 73 |
Rodman,
Поставить апач (или другой web сервер), настроить его на нужный порт. Реализовать бизнес логику средствами PHP (коли раздел по PHP). А в чем, собственно проблема?
??? Не представляю техническую реализацию подобного. (Ну, впринципе, можно конечно - но не нужно) Это сообщение отредактировал(а) Vasay - 11.6.2010, 22:57 -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: нет Всего: 122 |
стоит пока на локалке денвер и работает с провайдером сервиса в инете... который ответы присылает сам и я их принимаю и парсю. так вот если апач то как и где настроить? т.е. мой сервис должен в любой момент быть готовым принять пакет |
|||
|
||||
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: -1 Всего: 17 |
Socket?
Это сообщение отредактировал(а) gcc - 11.6.2010, 23:02 |
|||
|
||||
Vasay |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: 1 Всего: 73 |
Не понял.... так кто инициирует соединение? Т.е. Вам нужно сделать web-сервис? Или клиент для чужого web-сервиса? -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
|||
|
||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
SOAP/RPC нет? -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: нет Всего: 122 |
сори... перефразирую... не правильно начал понятие продвигать....
итак 1. Необходим серверный агент (демон), который будет постоянно работать на сервере и слушать нужный порт. 2. Скрипт работы его уже есть 3. Вопрос - как запустить этого агента (демона) на хостинге в интернете? 4. Будет ли сервак хостига - его рубить? следовательно - что делать в этом случае? агент должен работать постоянно. |
|||
|
||||
Vasay |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: 1 Всего: 73 |
Rodman,
А чем не устраивает Apache web сервер который есть на любом хостинге, разве что порт могут не дать поменять? Вы пытаетесь изобрести велосипед. Читайте про Web-сервисы. По сути все так же как и в случае с WEB сайтом, только вместо HTML вы должны отдать XML. Google выдает много ссылок с примерами. Особо не вчитывался, но на первый взгляд на хабре неплохо написано http://habrahabr.ru/blogs/php/46374/ Ну если уж так хочется изобрести велосипед, и написать свой сервер, то выбирать нужно из языков поддерживающих многопоточность. Только писать свой web-сервер Вам не нужно. Это сообщение отредактировал(а) Vasay - 13.6.2010, 21:19 -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: нет Всего: 122 |
так вот про велосипеды.
апач веб сервер слушающий порты 80 (8080)... но есть мой агент который должен может параллельно. а мож быть интергирован в апач но постоянно работать и получать пакеты...
тут вот тока запускается, но мне надо чтобы он работал без перерыва! т.е. 1. как проверить и поднять? 2. что и где прописать (поднят или нет)? 3. сколько позволено работать в бесконечном цикле? |
|||
|
||||
Vasay |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: 1 Всего: 73 |
Rodman,
Апач может слушать любой порт.
Во первых поправьте ссылку на хабру (4-ку потеряли) Во вторых - прочитайте статью, а не пролистайте. Grabber.php в данном примере к веб-сервису отношения имеет весьма косвенное - этот скрипт лишь раз в сутки выдирает курсы валют с со страниц сайта НБУ (Национального Банка Украины). Это сообщение отредактировал(а) Vasay - 13.6.2010, 22:42 -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
||||
|
|||||
HmeL |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 21.12.2006 Репутация: нет Всего: нет |
ЗАБУДЬТЕ ПРО ВЕБ-СЕРВИС
С самомго начала: 1. Есть сайт на удаленном хостинге. 2. Есть другой сайт, к которому можно подконнектиться с помощью fsockopen, послать определенный пакет - тогда в ответ начнут сыпаться пакеты. если ничего не слать - в ответ ничего сыпаться не будет. 3. Есть скрипт (php), который осуществляет коннект к другому сайту и обработку этих ответных пакетов. Скрипт запускался вручную на локальной машине (php.exe <имя_скрипта>) ВНИМАНИЕ, ВОПРОС! Как на удаленном хостинге стартовать этот скрипт? Как автоматически запустить его снова, если он вдруг выключится по неперехватываемому exception? Как долго разрешено такому скрипту находится в рабочем состоянии? |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
HmeL, ты - Rodman? или просто влом новую тему создать?
|
|||
|
||||
HmeL |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 21.12.2006 Репутация: нет Всего: нет |
Я, это я. Родман - мой коллега, который сидит в соседнем кабинете. Бьемся над одной проблемой. Гугл мне не в помощь - потому что не уверен в правильности терминологии. Поэтому и обращаюсь к вам за помощью
|
|||
|
||||
Vasay |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: 1 Всего: 73 |
HmeL,
Что-то мне кажется, что вы сильно мудрите. С какой периодичностью вам надо забирать данные? Может не надо ничего держать постоянно запущенным и достаточно использовать CRON ? На обычном хостинге вам никто не даст иметь своего демона. Нужен, как минимум, какой-нибудь "продвинутый" хостинг или vps. -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
|||
|
||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
HmeL,
Показываю на пальцах. Есть сайт на нем размещаем скрипт SOAP-сервер (можно делать и на сокетах). Есть другой сайт где стоит скрипт SOAP-клиент (можно делать и на сокетах) Делаем раз В браузере site1.com/client.php?start=&get=content Делаем два В командной строке wget site1.com/client.php?start=&get=content Делаем три На удаленном хостинге ssh user@serverip php /path/to/script/client.php start get=content О том как поднимать скрипт автоматически - гуглим "демоны на php" -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
HmeL |
|
||||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 21.12.2006 Репутация: нет Всего: нет |
Данные могут поступить в любой момент, и получать их необходимо как можно быстрее. Демон реализован так, что он установил соединение по сокету и слушает порт. как только по порту посыпались данные - он их заносит в БД. Проблема в том, что пока не пошлешь другому сайту определенный пакет (регистрация приемника), сайт не начнет сыпать пакеты в ответ. Поэтому автозапуск скрипта по событию, когда на порт что-то пришло - отпадает. CRON, хм... сейчас погуглю
а эту строку где прописывать надо? в httpd.conf ? Погуглю |
||||
|
|||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Эм? Вы же запускать что-то собирались на удаленном хостинге? Это команда для linux набираете ее в консоли на локальной машине. Под Win проще воспользоваться putty Хотя было бы еще проще, если бы вы немного пояснили задачу. Возможно, половина танцев с бубном просто не нужна. -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
HmeL |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 21.12.2006 Репутация: нет Всего: нет |
в предыдущем посте задачу прояснил - конкретнее некуда.
стартанул я его, отлично. а что делать когда он упал? просыпаться в 3 ночи и прописывать в командной строке снова? Vasay, За КРОН - большое человеческое, буду ковырять |
|||
|
||||
Vasay |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: 1 Всего: 73 |
HmeL,
Из всего вышенаписанного я понял, что у вас где-то есть сервер, который принимает входящие соединения, и сыпет в них какие-то данные. При этом соединение может оставаться открытым часами? Правильно? И Вам нужно написать клиента к этому серверу? -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
|||
|
||||
HmeL |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 21.12.2006 Репутация: нет Всего: нет |
Vasay, Понял правильно, только этот сервер по своему таймауту шлет запрос на разрыв соединения. в этом случае агент засыпает на минуту и создает новое соединение. Клиент уже написали. Протестирован на локале, на денвере, тепреь пытаемся запустить эту неведомую #@$ню на хостинге
![]() |
|||
|
||||
Vasay |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: 1 Всего: 73 |
HmeL,
Если хостинг дает доступ по ssh (если он не дает, то Вам такой хостинг не подходит) заходите на сервер по ssh (длы виндовс используете программу putty). Я запускаю демонов таким скриптом (т.е. создаю файлик с этим скриптом, ставлю на него права на исполнение):
комманда запуска в вашем случае "php имя_скрипта" Но вот хостинг, скорей всего будет этот скрипт убивать. Так что лучше взять какой-нибудь дешевый VPS -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
|||
|
||||
HmeL |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 21.12.2006 Репутация: нет Всего: нет |
Vasay, хостер поддерживает ssh и cron. я уже поменял код демона, он отрабатывает 100 циклов и шатдаунится. в крон прописал старт каждые 5 минут - так что с этим проблем нет.
пока что мучаемся через putty подключится к хостингу с помощью сгенеренного .ppk файла, но безрезультатно. может есть другие методы? напрямую по айпи можно подключится? |
|||
|
||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Абстрактно и ни о чем. Мы пульнем пакеты, нам начнут сыпаться пакеты. Зачем, почему - не понятно. Кто сказал что вообще нужно делать именно так? Обычно, если человек даже не знает с какого конца браться за сформулированную им задачу, то сформулировал он ее неправильно.
Для этого надо стартовать не сам процесс, а мастер-процесс. Который и будет контролировать работу дочерних. Упал дочерний - подняли его. -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: нет Всего: 122 |
Fortop, задача - отправить пакет одним агентом. а вторым получить подтверждение доставки.
вроде все получилось с отправкой. вот с получением подтверждением пока не справились, но возник вопрос - как проверить количество запущенных агентов кроном и рубануть их при надобности (есть подозрения что запустилось несколько)? |
|||
|
||||
Fortop |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Вот если бы не выдумывали велосипедов, то и проблем бы не имели. SOAP дает возможность получить подтверждение о приеме данных.
А вы не хотите сделать 1 вопрос - 1 тема? запущенные процессы можно посмотреть при помощи
-------------------- Мир это Я. Живее всех живых. |
||||||
|
|||||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: нет Всего: 122 |
работа происходит по определенному протоколу. поэтому SOAP отбросили. я не имею доступа к серверу через командную строку. я думал на РНР есть какой нить вариант |
|||
|
||||
Fortop |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Я об этом и писал. Зачем придумывать свой левый протокол, который не поддерживает подтверждения успешности операции? Вот теперь и отгребаете проблемы на ровном месте. PHP тем и удобен что он позволяет легко связывать кучу разных вещей, которых в нем нет. А вариант есть - я писал о нем.
Вопрос множества мастер-процессов решается путем lock.файла -------------------- Мир это Я. Живее всех живых. |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |