| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 вроде... Так вот:
В базу писать другим скриптом. |
| Автор: 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, А как двунаправлено, или двумя разными - подробнее, плиз. С помощью телнета... |
| Автор: 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, если он не работает с сокетами то каким образом ты на него телнетом коннектишься? (Или я что-то непонимаю... |
| Автор: Anton Vatchenko 13.11.2006, 15:39 |
| smartov, Телнет на 80-й порт... |
| Автор: smartov 13.11.2006, 17:11 |
| Anton Vatchenko, а... Тогда тебе конечно придется какую-то прослойку делать (текстовые файлы, база), вот только из телнета неудобно будет тебе хедеры то http-шные составлять. Так что по-сути получится обычный веб-сервис. |
| Автор: Powerhead 13.11.2006, 20:28 | ||
Anton Vatchenko, боюсь, что у тебя не получится то, что ты задумал. Как я понимаю, ты хочешь сделать веб-сервис, который расходует траффик экономней, чем http. Работая через веб-сервер, это врядли можно реализовать, всё зависит от самого сервера. Существует технология server-push, смысл её в том, что клиент с сервером обмениваются данными, не разрывая tcp соединения длительное время. Но как реализовать эту технологию в конкретном вебсервере и является ли она вообще экономней - я не знаю. |