Diffuser des infos à des utilisateurs spécifiques (ami, abonné)

sagat06 Messages postés 166 Date d'inscription mercredi 27 juin 2007 Statut Membre Dernière intervention 31 mars 2014 - Modifié par sagat06 le 17/03/2014 à 19:27
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 18 mars 2014 à 13:48
Bonjour à tous,

voilà j'aimerai savoir quels sont les process utilisés par twitter, facebook et autres pour qu'un utilisateur reçoivent les infos publiés par un des ses amis ou un de ceux auxquels il est abonné.

Je m'explique: j'ai réalisé une application mobile qui produit des images (ça pourrait être du texte), pour l'instant l'appli permet de les partager sur twitter, facebook, etc...

J'aimerais pouvoir améliorer l'appli pour que les images soit directement visible sur celle-ci. Ainsi les images produites par ses amis seraient visible sur une sorte de mur consultable sur l'application elle-même. Beaucoup d'applications font cela, face, twitter, instagram....

Ma question est donc comment diffuser une image produite par un utilisateur (et stocker sur mon serveur) à tous ces abonnés/ amis ?

J'arrive à conceptualiser la chose pour la diffuser à tout le monde: on lit dans une table prévues à cet effet les dernières images publiés par tout les utilisateurs, mais pour diffuser certaines images à certains individus ?

Dans mon esprit, toutes les images doivent être inscrites dans une table spécifiques avec l'id de celui les publiant, puis l'utilisateur à sa connexion lance une requête sur cette table avec comme condition where une liste d'id correspondant à ces amis...

Genre => SELECT image_id FROM table_image WHERE membre_id IN (liste_ami) LIMIT 10;
Avec cette sous requête => SELECT ami_id FROM table_ami WHERE membre_id=user_id;
On peux déduire list_ami

Le problème est que même en indexant tout bien, cela semble devenir une vrai usine à gaz dès qu'il y a plusieurs centaines d'utilisateurs simultanés avec des centaines d'amis chacun !!

Vous pensez que ces applications travaillent de cette façon ??

En attendant vos avis,
merci d'avance

Signé Sagat

1 réponse

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
17 mars 2014 à 19:39
Bonjour,

Je pense en effet que c'est ce genre de requête qui doit être utilisée.

Par contre nul besoin de passer par une sous requête je pense qu'une jointure de ce genre suffirait :
SELECT TI.image_id,TI.membre_id
FROM table_image TI 
        ,table_ami TA
WHERE TI.membre_id = TA.membre_id
AND TA.membre_id='$user_id'
LIMIT 10;

1
sagat06 Messages postés 166 Date d'inscription mercredi 27 juin 2007 Statut Membre Dernière intervention 31 mars 2014 1
18 mars 2014 à 13:43
Merci, faire une jointure est effectivement plus simple.

Mais celle que tu me présente me laisse perplexe. Ne serait-il pas plus juste d'utiliser celle-ci:

SELECT TI.image_id,TI.membre_id
FROM table_image TI
,table_ami TA
WHERE TI.membre_id = TA.ami_id
AND TA.membre_id='$user_id'
LIMIT 10;

Avec une table_ami TA construite avec les champs suivants : membre_id, ami_id où le couple membre_id*ami_id est un index unique
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
18 mars 2014 à 13:48
Oui c'est pas mal.
Après.. je ne sais pas comment tu as géré ta table... ami_id veut dire l'id de mes amis.. ou alors je suis l'ami de membre_id...

Ce n'était qu'un exemple.
Je pense qu'en effet, ta requête correspondra mieux à tes besoins... mais il n'y a que toi qui peut le savoir;. ^^
0
Rejoignez-nous