Как известно с прошлой 38-й серии, пишу монитор серверов Вопрос в следующем. Ест скрипт, который будет запускаться кроном. Для опроса и обновления инфы 1-го сервера тратится около 0,2 сек. При 50ти сервах в базе - уходит порядком 10 сек. Нетрудно посчитать, что при 2000 серверов время составит около 7 минут (ну или мне так кажется на данном этапе). Но там инфу нужно оперативно обновлять - раз в минуту/две(три). Если урезать время ожидания от сокета (сейчас stream_set_timeout($fp, 0, 400000)) то больше "пропускает", не дожидаясь ответа, а это есть не гуд. Как ускорить обработку? Все работает в цикле, отправляется первый запрос, ждет, получает ответ, запись в базу, заново.
а что там обновляется? на что уходит время в основном? на бд или на опрос?можно попробовать тот же редис... если не нужна реляционная база данных
Padaboo Не, с мускулом там все в порядке. Время уходит на сам опрос. stream_set_timeout($fp, 0, 400000) Вот тут указывается время, сколько ждать ответа, если сервер "стеснительный". От некоторых быстро приходит ответ (при значении stream_set_timeout($fp, 0, 100000)), но большая часть не успевают "отдать" (пинг и все такое) нужное, хотя серв и доступен. Делать меньше время - в убыток "качеству" инфы, ждать долго - время. Вот бы както одновременно на все послать запрос
Padaboo Это ты можешь спросить у разработчиков Valve и иже с ними)) Там не то чтобы файл лежит на сервере в готовом виде, а коннектится к самому CS, а он на определенный запрос (игроки, инфа, настройки) дает ответ. Отдают не распарсенную строку. Дело не в добавке в базу и не в парсинге строки, а в том что пля много времени уходит дать запрос к серверу и забрать у него
Padaboo О, ответ правильный Первая ссылка гугла "многопоточность php " самое оно)) Спасибо, пошел читать.
Всего обновлено: 42 Пропущено: 8 Page created in 1.3413 seconds. Совсем другое дело асинхронные сокеты рулят