J'essaye de construire un mécanisme de suivi de type Twitter. L'utilisateur prend une action. Nous dressons une liste de tous les abonnés de ces utilisateurs, puis remplissons tous leurs flux avec des informations. Comme cela peut prendre un certain temps (si vous avez 10 000 abonnés, c'est-à-dire 10 000 flux pour insérer des informations, par exemple 10 000 appels SQL), je veux m'assurer que cela se fasse en arrière-plan, alors que l'utilisateur avec sa vie.Suivre le mécanisme avec php: quelle stratégie utiliser?
Ainsi, la stratégie que je considère est la suivante:
- utilisateur prend des mesures. Php script ouvre un autre script PHP qui fera tout le travail et cela pourrait prendre une seconde ou deux.
- pendant ce temps, l'utilisateur qui a pris l'action peut continuer sa vie, son script continue et c'est rapide.
Pensées? J'ai également joué avec l'utilisation d'une file d'attente, quelque chose comme SQS, mais cette approche semble fonctionner aussi? De plus, il a l'avantage (pour moi) qu'il est plus facile de tester localement et plus facilement sur des hôtes non ec2.
Et si c'est une bonne approche, comment pourrais-je ouvrir un script php à partir d'un script PHP? Pourrait-il être aussi simple que (si le script PHP vit à une URL) faire un get sur une URL où ce script vit?
L'utilisateur B se connecte. L'utilisateur B suit 200 personnes. Maintenant, nous devons lancer une requête qui dit "select * from content où authorid ({tous les identifiants de ces 200 personnes}) order by date_created desc". Ou 1000 personnes. Cela ne va pas du tout, cette requête va devenir très lente. Le stockage de données que vous mentionnez n'est pas réellement un problème, je ne vais pas dupliquer les données pour chaque suiveur, je vais juste dupliquer un pointeur vers les données (un identifiant) pour chaque suiveur, et c'est une quantité triviale de stockage. Alors nous faisons juste 2 requêtes rapides pour montrer votre flux: obtenir la liste des identifiants de contenu, et obtenir le contenu. Pensées? – PeterV
Je suppose que j'essaie d'éviter cette requête "SELECT * FROM contenu où authorid IN (une liste vraiment longue)", parce que je soupçonne que ce sera assez lent, surtout si vous suivez beaucoup de gens. – PeterV
Droite. Je ne fais pas un IN. IN est très lent, comme vous l'avez dit. Consultez ma requête – Stephen