[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: бесконечный цикл
MatrixGod
всем привет!

в общем задача такая:

есть некий REST-API который возвращает JSON когда к нему обращаешься.
API этот содержит информацию реального времени и дата которую он возвращает может меняться хоть каждую секунду.

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

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

спасибо за советы.
sergeiss
У меня есть подозрение, что ты хочешь "убить" сервер постоянным большим объемом данных...

Чуть подробнее поясни, для чего это всё, что за данные? Покумекаем, может что и придумаем полезное smile.gif (кое-какие соображения есть, но сначала ответь на вопросы).

И какой смысл твоему приложению получать эту инфу каждую секунду?

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Nikitian
Было бы логичнее и правильнее использовать идею евентов: внешний сервис при появлении новых данных дёргает связанные евенты вашей системы.
sergeiss
Nikitian, привет! smile.gif

Пусть ТС ответит сначала, что именно он хочет получить.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
MatrixGod
sergeiss и Nikitian,

начнем с того что если я бы хотел уронить чей-то сервак, есть уже куча готовых крутых ДДОС тулзов.

API такой какой есть. дергаешь УРЛ - получаешь JSON. все.
если бы они могли посылать ивенты, пуш нотификации или даже сообщения по аське - вопроса бы не было, я бы просто сидел и "слушал".

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

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

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

в общем как мне это лучше сделать? совет?
sergeiss
Я бы, наверное, так сделал...

Во-первых, понадобится демон на ПХП, который делает 2 вещи:
- постоянно через курл пинает тот самый сервак, который отдает данные
- принимает соединения через WinSocket от клиентских частей, и когда необходимо, отправляет им данные;
Во-вторых, понадобится клиентская часть, которая запускается, устанавливает коннект с твоим серваком по WinSocket'у и ждет инфу. При поступлении данных что-то делает (информирует юзера и т.д.).
Например, пусть демон анализирует изменения и шлет инфу клиенту тогда тогда, когда произошли изменения какого-то параметра. Это позволит клиенту иметь разумный трафик, потому что пока нет данных, то ничего и не передается, в отличие от аякса.
Большой плюс - на сервере будет только один процесс, работающий с сервером данных. Естественно, тебе придется поработать с многопоточностью smile.gif

Все остальные варианты (кроме WinSocket) будут, наверное, не совсем правильные в данном случае.

PS. Говоря про "уронит сервер" я подразумевал, что ежесекундные аякс-запросы от клиентов, особенно когда их много, создадут бешенный трафик smile.gif В то время как ВинСокет лишен этого недостатка. Плюс к этому, в отличие от аякса он сам инициирует передачу данных от сервера к клиенту, когда это необходимо.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
MatrixGod
sergeiss, спасибо.
но пхп демон о котором ты говорил все равно будет написан таким образом:
while(true){la la la}

вопрос не сдохнет ли ничего? боюсь что сдохнет...
twin
MatrixGod
Цитата
все это дело будет бежать на обычном хостинге.

Цитата
вопрос не сдохнет ли ничего? боюсь что сдохнет...
Конечно сдохнет при первом же ребуте. А чем крон не угодил?

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
MatrixGod
twin, крон не чаще чем раз в минуту. а мне надо каждую секунду.

пы.сы. предпологается что сервек ребутиться не будет.
с ребутом сервака я разберусь.
twin
Ну тогда точку выхода сделай да и все. Я бы на крон повешал бы дополнительную проверку. Мало ли. Демон на PHP вещь крайне ненадежная.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
sergeiss
MatrixGod - нет проблем. Делаешь по крону запуск хоть раз в минуту, хоть раз в 5 минут. Скрипт проверяет наличие работающей версии. Если находит, то выключается. Если не находит, то начинает сам работать.

Почитай про semaphore в ПХП.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
McLotos
Цитата (MatrixGod @ 21.07.2014 - 04:33)
иногда каждую секунду.

точнее от 5 до 15 секунд в зависимости от того о каких котировках речь =)
А вообще может поможет вот это?

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
McLotos
ещё вот. в одной из моих старых тем
Цитата
Решил не создавать новую тему, а тут рассказать.
В общем наткнулся на интересную статейку
http://habrahabr.ru/post/132609/
Возник вопрос. На сколько правильный подход?
И кто-нибудь юзал
http://php.net/manual/en/book.pcntl.php
Расскажите как это?


_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.