编程语言
首页 > 编程语言> > php – 通知系统(电子邮件,社交媒体)

php – 通知系统(电子邮件,社交媒体)

作者:互联网

我正在为我正在合作的公司写一个小型的内部社交媒体平台,没什么大不了的. 40,000名用户.它基本上类似于Facebook或Google,但功能较少.

该平台还具有电子邮件通知系统(除了针对在线用户的Ajax通知).

现在这是我的问题 – 它根本就没有扩展.

我有一个mySQL表,其中包含要发送的所有电子邮件通知.因此,只要有人在一个组中编写故事,系统就会自动在该表中插入一行,而email_send函数(cronjob)会将这些邮件发送给用户(用户可以在即时,每日或每周通知邮件之间进行选择)

到目前为止,如此好 – 如果这些团体的成员数量很少.

但现在想象一个拥有5k成员的小组 – 一旦用户将故事发布到该组中,它就会触发5,000个SQL插入到通知表中.

你怎么解决这个问题?我想到了服务器上的后台工作人员扫描新故事/评论/东西并在后台触发email_send功能.这会扩大规模吗?或者只是一种标准的方式,我只是在想错误的方向?

任何正确方向的点都会非常感激,
谢谢你,快乐的圣诞节:)

//马库斯

解决方法:

您不应该通过发送电子邮件来减慢正常的Web请求/响应流 – 只需将数据转储到队列中并让后台工作接收该工作 – 听起来您已经在使用cron这样做了吗?

那么插入是导致缓慢的原因吗?
然后只需标准化您的数据,只需在您的电子邮件队列表中插入一个groupID即可.该groupID与包含X用户及其电子邮件地址的组相关联.那么你将插入1条记录而不是5000条记录.
很快就可能是这样的……

notificationTable
rowID | emailID | groupID | status

groupTable
groupID | groupName 

userTable
userID | userName | emailAddress | groupID

如果您想更进一步,那么您可以引入一个消息传递系统,以便您可以发出简单(和快速)消息,并让一个或多个侦听器(在一个或多个单独的服务器上)等待一个或多个通道上的消息.

标签:php,mysql,notifications,social-networking,email
来源: https://codeday.me/bug/20190629/1329865.html