Сайт, над которым я работаю, должен получить твиты от 150-300 человек, сохранить их локально, а затем разместить их на первой странице. Профили сидят в группах.
На страницах будут отображаться
- последние 20 твитов (или 21-40 и т. Д.) По дате, группе профилей, отдельному профилю, поиску или «теме» (что-то вроде другой группы .. я думаю ..)
- живое, контекстно-зависимое облако тегов (на основе последних 300 твитов текущего поиска, показанной группы профилей или одного профиля)
- различные статистические данные (групповые, наиболее активные и т. Д.), Которые зависят от типа отображаемой страницы.
Мы ожидаем довольно много трафика. Последний, аналогичный сайт достиг пика почти в 40 тысяч посещений в день и столкнулся с проблемами, прежде чем я начал кэшировать страницы в виде статических файлов и отключать некоторые функции (некоторые, случайно ...). Это было вызвано главным образом тем, что при загрузке страницы также извлекал последние x твитов из 3-6 профилей, которые не были обновлены дольше всего.
С этим новым сайтом я могу, к счастью, использовать cron для получения твитов, так что это помогает. Я также немного денормализую БД, поэтому для этого нужно меньше объединений, оптимизирую его для более быстрого выбора вместо размера.
Теперь, основной вопрос : как мне выяснить, какие профили эффективно проверять наличие новых твитов? Некоторые люди будут чирикать чаще, чем другие, некоторые будут чирикать в очередях (это часто случается). Я хочу, чтобы главная страница сайта была как можно более актуальной. Если речь идет, скажем, о 300 профилях, а я проверяю 5 каждую минуту, некоторые твиты появятся только через час после факта. Я могу проверять чаще (до 20 КБ), но хочу максимально оптимизировать это, чтобы не превышать ограничение скорости и , чтобы не исчерпать ресурсы на локальном сервере (это достигло предела подключения mysql с этого другого сайта).
Вопрос 2: , поскольку cron «запускается» только один раз в минуту, я полагаю, что мне приходится проверять несколько профилей каждую минуту - как указано, по крайней мере, 5, возможно, больше. Чтобы попытаться распространить его за эту минуту, я мог бы поспать несколько секунд между партиями или даже отдельными профилями. Но тогда, если это займет больше 60 секунд, скрипт запустится сам по себе. Это проблема? Если так, как я могу избежать этого?
Вопрос 3: Есть еще какие-нибудь советы? ? Файлы сведений URL-адрес?