За последние 24 часа нас посетили 18917 программистов и 1627 роботов. Сейчас ищут 912 программистов ...

socket + time

Тема в разделе "Прочие вопросы по PHP", создана пользователем Апельсин, 4 июн 2010.

  1. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Как известно с прошлой 38-й серии, пишу монитор серверов :)

    Вопрос в следующем. Ест скрипт, который будет запускаться кроном. Для опроса и обновления инфы 1-го сервера тратится около 0,2 сек. При 50ти сервах в базе - уходит порядком 10 сек. Нетрудно посчитать, что при 2000 серверов время составит около 7 минут (ну или мне так кажется на данном этапе).
    Но там инфу нужно оперативно обновлять - раз в минуту/две(три). Если урезать время ожидания от сокета (сейчас stream_set_timeout($fp, 0, 400000)) то больше "пропускает", не дожидаясь ответа, а это есть не гуд.
    Как ускорить обработку?

    Все работает в цикле, отправляется первый запрос, ждет, получает ответ, запись в базу, заново.
     
  2. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    а что там обновляется? на что уходит время в основном? на бд или на опрос?можно попробовать тот же редис... если не нужна реляционная база данных
     
  3. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Padaboo
    Не, с мускулом там все в порядке. Время уходит на сам опрос.
    stream_set_timeout($fp, 0, 400000)
    Вот тут указывается время, сколько ждать ответа, если сервер "стеснительный". От некоторых быстро приходит ответ (при значении stream_set_timeout($fp, 0, 100000)), но большая часть не успевают "отдать" (пинг и все такое) нужное, хотя серв и доступен.
    Делать меньше время - в убыток "качеству" инфы, ждать долго - время. Вот бы както одновременно на все послать запрос :)
     
  4. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    а чего они там отдают, нельзя прям на серверах генерировать xml тем же кроном?
     
  5. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Padaboo
    Это ты можешь спросить у разработчиков Valve и иже с ними))

    Там не то чтобы файл лежит на сервере в готовом виде, а коннектится к самому CS, а он на определенный запрос (игроки, инфа, настройки) дает ответ.
    Отдают не распарсенную строку. Дело не в добавке в базу и не в парсинге строки, а в том что пля много времени уходит дать запрос к серверу и забрать у него :(
     
  6. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    а много поточность на php не про эту оперу?
     
  7. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Padaboo
    О, ответ правильный :)
    Первая ссылка гугла "многопоточность php " самое оно)) Спасибо, пошел читать.
     
  8. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Всего обновлено: 42
    Пропущено: 8
    Page created in 1.3413 seconds.

    Совсем другое дело :) асинхронные сокеты рулят