Я пытаюсь построить твитер-подобный механизм следования. Пользователь принимает меры. Мы составляем список всех подписчиков пользователей, а затем заполняем все их потоки некоторой информацией. Поскольку это может занять некоторое время (если у вас есть 10 000 подписчиков, то есть 10 000 потоков для вставки информации, например, 10 000 вызовов SQL), я хочу убедиться, что это делается в фоновом режиме, в то время как пользователь, который принимает действие, может пойти с его жизнью.Следуйте механизму с php: какую стратегию использовать?
Итак, стратегия я рассматриваю это:
- пользователь принимает меры.
- php script открывает еще один php-скрипт, который будет выполнять всю работу, и это может занять секунду или два.
- Между тем, пользователь, который принял действие, может продолжать свою жизнь, их сценарий продолжается, и это быстро.
Мысли? Я также играл с использованием очереди, что-то вроде SQS, но этот подход звучит так, как будто он тоже может работать? Плюс у него есть преимущество (для меня), что легче тестировать локально и проще работать на хостах non ec2.
И если это хороший подход, как мне открыть php-скрипт из PHP-скрипта? Может ли быть так просто, как (если скрипт php живет на URL-адресе), чтобы получить URL-адрес, где живет этот сценарий?
Пользователь B входит в систему. Пользователь B следит за 200 человек. Теперь нам нужно запустить запрос, который говорит «select * from content, где authorid в ({all the id of the 200 people}) order by date_created desc». Или 1000 человек. Это совсем не значит, что этот запрос будет очень медленным. Вы не упомянули о том, что хранилище данных на самом деле не проблема, я не буду дублировать данные для каждого последователя, я просто дублирую указатель на данные (идентификатор) для каждого последователя, и это тривиальный объем памяти. Итак, мы просто делаем 2 быстрых запроса, чтобы показать ваш поток: получить список идентификаторов контента и получить контент. Мысли? – PeterV
Я предполагаю, что я пытаюсь избежать этого запроса «SELECT * FROM content WHERE authorid IN (действительно длинный список)», потому что я подозреваю, что это будет довольно медленно, особенно если вы следите за множеством людей. – PeterV
Право. Я не делаю IN. IN очень медленно, как вы сказали. Проверьте мой запрос. – Stephen