Как к Facebook как новостной канал?

Как может я impelement, Facebook NewsFeed как функция в моем PHP основывал общественное приложение? Например, "X пользователей загрузили новую фотографию, Z проявление внимания по событию". Выборка всех этих данных из различных таблиц использует также ресурсы.

Спасибо.

5
задан cnkt 3 February 2010 в 13:23
поделиться

4 ответа

Есть пара разных способов сделать это, но тот, который я предложил, это так. Держите единственную «историю» таблицу, которая содержит все записи для каждого пользователя, временного метка и описание действия, а также флагом (или предопределенные ключей) для какого типа действия произошла. Это позволит вам выборочно запросить одну таблицу для определенных типов действий и в пределах установленного кадра времени для отображения. Тем не менее, с большим количеством пользователей эта таблица будет быстро расти, поэтому вы можете рассмотреть чистку старых данных, которые вы знаете, вы не будете использовать снова позже. Обратите пристальное внимание индексам, чтобы быстро сохранить запросы и рассмотреть возможность использования кэширования запросов, поскольку вы, вероятно, будете часто генерировать те же результаты.

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

7
ответ дан 13 December 2019 в 05:34
поделиться

Я думаю, что вы ответили на ваш собственный вопрос: вытащите данные с одной таблицы.

Простой подход будет то, что все ваши другие компоненты могут говорить с центральным «регистратором событий», который записывает что-то для новостей пользователей.

1
ответ дан 13 December 2019 в 05:34
поделиться

Мне понравилось решение Paul (легко с определенными структурами, такими как Symfony). Если вы хотите идти дальше с точки зрения скорости, вы можете использовать дополнительно использовать систему кэширования для каждого пользователя, которая будет запрашивать данные и построить новые каналы по первому запросу. Затем извлеките кэшированные данные по следующим запросам. Вестник событий очистит кэш для заинтересованных пользователей при запуске.

В случае в Facebook я думаю, что они используют реализацию Ajax «Push», чтобы уведомить, что на стороне клиента есть новости, чтобы показать.

Система кэширования Xcache, APC или файловой системы может помочь вам построить такую ​​систему.

1
ответ дан 13 December 2019 в 05:34
поделиться

Один из основных факторов риска - смещение байтов. Символ со знаком сохраняет бит знака при смещении вправо, а символ без знака - нет. Вот небольшая тестовая программа:

#include <stdio.h>

int main (void)
{
    signed char a = -1;
    unsigned char b = 255;

    printf("%d\n%d\n", a >> 1, b >> 1);

    return 0;
}

Она должна печатать -1 и 127, несмотря на то, что a и b начинаются с одного и того же бита образца (учитывая 8-битовые символы, два комплементарных и знаковых значения с помощью арифметического сдвига).

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

-121--2858839-

Используйте DateTime.ParseExact .

this.Text="22/11/2009";

DateTime date = DateTime.ParseExact(this.Text, "dd/MM/yyyy", null);
-121--672127-

Начните с определения действий, которые вы называете действиями на своем веб-сайте. Действие может содержать несколько гиперссылок. Таким образом, многомерный массив php может помочь здесь, который может перейти в таблицу как сериализованный объект.

Скажем, что x теперь связан с y, z, a и b. можно определить y, z, a и b в качестве связей профиля. Скажем, х прокомментировал новое фото. В этом случае y станет новой гиперссылкой на фото профиля человека. Скажем, х стал поклонником группы зооу. В этом случае zoozoo становится гипер- ссылка к странице поклонника.

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

Определите действия, как в 1,2,3 или все, что вы считаете, это лучшее действие, которое люди могут быть заинтересованы в сообществах, которые вы поддерживаете.

Структура таблицы должна быть простой: массив activity php, метка времени. Если вы используете jQuery и Ajax для заполнения действия, как сделано в Facebook с помощью мыши прокрутки, то вы всегда можете преобразовать массив php в json и форматировать его на стороне клиента.

Это делается при каждом входе пользователя в систему.

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

Никогда не отображать более 10 20 30 последних действий.

Надеюсь, это поможет вам:)

3
ответ дан 13 December 2019 в 05:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: