Je travaille sur un site de type réseau social en PHP, je l'ai fait une fois avant et le site a surpassé ma capacité de codage de suivre, il y a quelques années et maintenant je veux revenir sur ce projet.Les actions de l'utilisateur comme les réseaux sociaux facebook, myspace, tous les grands
Basicly sur mon réseau il y a une table mysql friend_friend qui garde la trace de qui est qui est un ami, pour chaque ami confirmé, il y a 2 entrées dans la base de données ici est que le tableau:
CREATE TABLE IF NOT EXISTS `friend_friend` (
`autoid` int(11) NOT NULL AUTO_INCREMENT,
`userid` int(10) DEFAULT NULL,
`friendid` int(10) DEFAULT NULL,
`status` enum('1','0','3') NOT NULL DEFAULT '0',
`submit_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`alert_message` enum('yes','no') NOT NULL DEFAULT 'yes',
PRIMARY KEY (`autoid`),
KEY `userid` (`userid`),
KEY `friendid` (`friendid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1657259 ;
Je puis avoir une table d'utilisateur avec toutes les informations d'utilisateur appelé friend_reg_user
Ensuite, un tableau pour les bulletins que les utilisateurs publient, l'objet est de ne montrer que les bulletins des utilisateurs avec lesquels vous êtes amis. Voici les bulletins tableau
CREATE TABLE IF NOT EXISTS `friend_bulletin` (
`auto_id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(10) NOT NULL DEFAULT '0',
`bulletin` text NOT NULL,
`subject` varchar(255) NOT NULL DEFAULT '',
`color` varchar(6) NOT NULL DEFAULT '000000',
`submit_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`status` enum('Active','In Active') NOT NULL DEFAULT 'Active',
`spam` enum('0','1') NOT NULL DEFAULT '1',
PRIMARY KEY (`auto_id`),
KEY `user_id` (`user_id`),
KEY `submit_date` (`submit_date`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=455144 ;
Ok, donc de le faire je soit exécuter une requête sur la table friend_friend pour obtenir tous les amis d'un utilisateur et les ajouter à une chaîne comme celui-ci 1,2,3,4, 5,6 ceux-ci seraient des numéros d'identification d'ami et ensuite sélectionner dans la table de bulletin où ID d'auteur de bulletin est dans ma liste d'identification d'ami
La deuxième méthode consiste à utiliser JOINS pour obtenir toutes ces données à la fois.
Ma quête maintenant enfin, une fois que le site devient très grand, quand il y a des millions d'amis et d'enregistrements dans la BD tout cela ralentit, quelles sont mes options pour accélérer les choses? Y a-t-il une meilleure manière de faire cela? Aussi, je prévois de changer les bulletins pour inclure plus que des bulletins, mais faire plus d'actions des utilisateurs comme les grands sites maintenant afin qu'il affiche les mises à jour de statut et les blogs et tous les
sons plus facile à dire qu'à faire :-) –
J'ai un ami qui possède aussi un grand réseau et il mentionne en utilisant certains sorte de table de hachage pour les recherches rapides, mais il est très secret au sujet de ses codes et méthodes, tout ce que je sais, c'est que ses affaires fonctionnent bien et il mentionne aussi hash, je ne trouve jamais beaucoup d'informations sur la façon de faire une telle chose – JasonDavis