我目前正在为基于Symfony 3的管理系统开发一个个人信息模块。原则 2 用作 DBAL。
为了显示邮件,我想按主题对它们进行分组(并且因为邮件只有一个发件人和一个收件人,所以按人员分组)。
我正在努力寻找从MySQL数据库(通过Doctrine)和排序/分组获取消息的最佳方式。
第一个想法是通过数据库请求获取不同的主题列表(针对特定人员)。然后为每个主题提出新的请求。我想这可能比收集此人(发送者或接收者)的所有消息并使用PHP函数对其进行排序/分组更快。另一方面,这可能意味着大量的数据库请求,这可能会减慢整个应用程序的速度。
消息是数据库表示的实体。另一种方法是将每条消息与持久对话相关联。因此,至少我不必查询主题,尽管我仍然必须查询每个对话。
通常,此应用程序仅由大约30人使用。所以性能目前还不是一件好事。但我想以一种合适的方式进行编码,这也可以应用于更大的用户群。
我希望你能给我一些关于处理这个问题的方法的意见。
最好的问候,
斯皮甘菊
据我所知,您不想从您的应用程序中编写 niether slack 或 facebook,而是想为现有模块添加一些可扩展性层,以防您的系统用户数量增加。这就是为什么我可以建议延迟加载将是您可以应用的最简单的解决方案。只需仅加载用户可以通过查询在其屏幕上看到的消息量 - 无论您的消息表如何增长,它都将保证相同大小的查询。比javascript和其他查询(应该加载完全相同的实体批次)通过ajax将手来加载/呈现新消息。您可以通过谷歌轻松找到有关应用延迟加载的更多信息。并且不要忘记,您可以在表示消息的 html 容器上添加各种数据属性(如数据通知、数据公告等)。它们可用于通过javascript对用户机器上的消息进行排序/分组,而无需任何额外的服务器资源负载。希望对您的问题有所帮助!