Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Можно ли общаться со скриптом, пока он работает?


Автор: Anton Vatchenko 9.11.2006, 17:19
У меня есть скрипт, в нем цикл while(1). Мне удалось сделать connection:keep-alive, он может висеть в рабочем состоянии более 5 минут. Можно как-нибудь влиять на его работу (кроме quit). Конекчусь телнетом, он мне постоянно выдает информацию... А нельзя ли ему тоже что-то передать?

Автор: G0rinich 10.11.2006, 10:14
Можно, но не непосредственно скрипту. Для этого придется использовать либо файл либо БД, куда скрипт будет регулярно заглядывать и смотреть не сказали ли ему что-нибудь.
Ну или сокет слушать.

Автор: Anton Vatchenko 10.11.2006, 11:16
G0rinich, 
А можно подробнее. Я добился того, чтобы скрипт мне около 5 минут слал информацию, а как бы еще куда-то писать... только без второго параллельного соединения - вещь для мобил...

Автор: CyClon 10.11.2006, 12:25
Есть команда sleep вроде...

Так вот:

Код

while (1) {
     if (mysql_query("...")) {
         ...
    }
    sleep(5);
}


В базу писать другим скриптом.

Автор: Anton Vatchenko 10.11.2006, 12:54
Все же хотелось бы как-то снизить кол-во соединений. Просто я исходил из следующего: мне нужно минимизировать количество соединений, а точнее свести к единице. Так как каждое подключение дорого обходится - 90% заголовка, 10% нужной информации... А здесь получается, что для чтения  я могу не пересоединяться, а для отправки - должен! А жаль.

Автор: smartov 10.11.2006, 17:26
Anton Vatchenko, не слушай ты их. Конечно можно.
Можно открыть сокет в скрипте и слушать из него команды. Сейчас телнетом ты же тоже коннектишся на сокет, только в этот сокет сервер пишет тебе, а в тот ТЫ что-то будешь писать скрипту.
Можно конечно и двунапревленно но если новичок не советую. Попробоуй пока с двумя разными сокетами.

Автор: Anton Vatchenko 10.11.2006, 18:11
smartov, А как двунаправлено, или двумя разными - подробнее, плиз. С помощью телнета... smile 

Автор: smartov 10.11.2006, 19:37
Anton Vatchenko, а ты вообще с php знаком? Я тебе не напишу универсального примера который по Ctrl+C Ctrl+V можно вставить и "все будет красиво".
Попробуй написать открытие сокета на PHP. Инфы в сети про это куча. Если не получится - спрашивай.

Автор: Anton Vatchenko 13.11.2006, 14:18
Ну так у меня сервер с сокетами не работает! Поэтому я и спрашиваю как с обычным скриптом такое вытворить?

Автор: smartov 13.11.2006, 14:45
Anton Vatchenko, если он не работает с сокетами то каким образом ты на него телнетом коннектишься?
(Или я что-то непонимаю...  smile )

Автор: Anton Vatchenko 13.11.2006, 15:39
smartov, Телнет на 80-й порт...

Автор: smartov 13.11.2006, 17:11
Anton Vatchenko, а... smile понятно. Это ж просто http smile
Тогда тебе конечно придется какую-то прослойку делать (текстовые файлы, база), вот только из телнета неудобно будет тебе хедеры то http-шные составлять. Так что по-сути получится обычный веб-сервис.

Автор: Powerhead 13.11.2006, 20:28
Цитата(Anton Vatchenko @ 13.11.2006,  15:39)
smartov, Телнет на 80-й порт...

Anton Vatchenko, боюсь, что у тебя не получится то, что ты задумал. Как я понимаю, ты хочешь сделать веб-сервис, который расходует траффик экономней, чем http. Работая через веб-сервер, это врядли можно реализовать, всё зависит от самого сервера. Существует технология server-push, смысл её в том, что клиент с сервером обмениваются данными, не разрывая tcp соединения длительное время. Но как реализовать эту технологию в конкретном вебсервере и является ли она вообще экономней - я не знаю.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)