Масштабируемое решение для многопоточных комментариев
Я не уверен, как создать систему многопоточных комментариев в PHP и MySQL, которая может обрабатывать сотни комментариев одновременно.
Что-то вроде этого - единственное, что я могу придумать
$query = execute_query...('SELECT * FROM `comments` WHERE `post` = "1"');
foreach($query as $comment){
$replies = execute_query...('SELECT * FROM `comment_replies` WHERE `comment` = "' . $comment['id'] . '"');
if($replies){
echo $comment['body']; //....
foreach($replies as $reply){ /*....*/ }
}
else{
echo $comment['body'];
}
}
Поэтому мне нужны советы о структуре базы данных и о том, как я могу получить все многопоточные комментарии с учетом производительности, пожалуйста:)
3 ответа
Я уверен, что вы найдете статью " Управление иерархическими данными в MySQL" полезной. Эти две таблицы могут быть легко объединены в одну
Почему бы не присоединиться к комментариям и таблице comment_replies?
затем просто добавьте дополнительное сгенерированное поле, которое показывает, является ли это комментарием или comment_reply. И выберите их, если в foreach, как:
if($type == 'comment')
{
//do something with the comment
}
elseif($type == 'comment_reply')
{
//do something with the comment reply
}
Также проверьте, изменяется ли идентификатор комментария, чтобы вы могли разделить их.
Я бы выбрал модель списка смежности, а не модель вложенного множества, потому что с моделью вложенного множества мне пришлось бы строить всю структуру дерева на каждой операции INSERT и DELETE, выполняемой над таблицей, и, если у меня есть 1000 записей, для одной INSERT или Операция УДАЛИТЬ все записи должны быть обновлены, что занимает больше времени для выполнения. Моя структура базы данных будет:
Также я написал небольшую систему комментариев с php mysql jquery и ajax. Взгляните на http://pradipchitrakar.com.np/programming/threaded-comment-system/