我有一个当前发送电子邮件的web应用程序。在我的web应用程序发送电子邮件的时候(电子邮件的发送是基于用户操作的,而不是自动的),它必须运行其他进程,比如压缩文件。
我试图让我的应用程序“面向未来”-所以当有大量用户时,我不想让服务器变得紧张,所以我想把需要发送的电子邮件和需要压缩的文件放在一个队列中。将它们放入表中,然后使用cron作业每秒检查并执行它们(一次x行)。
以上是个好主意吗?还是有更好的方法?我真的需要帮助才能做好这件事,这样我以后就不会头疼了:)
感谢所有人
发布于 2009-01-22 18:20:09
这是一种很好的方法,但您现在可以做的最重要的事情是有一个清晰的接口来将消息排入队列,以及一个用于消费队列的接口。不要将两端的用法硬编码到DB中。
稍后,如果这成为瓶颈,您可能希望从另一台甚至无法访问数据库的机器上发送邮件,所以这一小笔前期投资将在以后为您提供选择。
发布于 2009-01-22 18:28:12
你可能忽略的一个方面是你正在使用的压缩速度,在你的压缩过程中使用较轻的压缩级别可能是你最感兴趣的,因为这可以大大改善压缩时间(很容易增加一倍),当你进入多用户的领域时,这可以增加很多。
更好的是,如果你使压缩智能,当你压缩大的已经压缩的文件(MP3,ZIP,DOCX,XLSX,JPG,GIF等)时不使用压缩,当你有简单的文本文件(TXT,XML,DOC,XLS等)时使用高压缩,因为即使压缩很重,它们也会压缩得非常快。
发布于 2009-01-22 18:48:10
重要的一点可能是,与其让cron作业每秒运行一次,不如让一个始终运行的守护进程在退出时自动重新启动-或者类似的东西。
一个原因是,正如您自己所描述的那样,如果许多用户请求发送电子邮件,并且队列堆积起来,一个cronjob将没有时间在ext One统计数据之前使用芬兰语,并且您有可能使您的系统被进程淹没。
https://stackoverflow.com/questions/470238
复制相似问题