我需要一些关于表现的建议......
我们有一个长期运行的PHP脚本(可能需要超过10分钟),其中进度更新通过服务器发送事件触发回UI。 http://www.html5rocks.com/en/tutorials/eventsource/basics/
它一切正常,但我担心它会破坏数据库。
粗糙的流程是这样的;
1)用户转到应用的“发布”页面。
2)UI打开一个EventSource流到一个监视是否的PHP脚本 发布正在进行中,如果是,则报告进度事件 - 每次检查 第二
3)如果用户启动发布,则会触发对long的Ajax调用 运行php脚本。
4)然后,EventSource将报告此发布的事件。
通过在mySQL表中存储进度来完成监视。 长时间运行的脚本将进度写入数据库,事件脚本每秒检查一次。
正如我所说,这一切都有效,除了它每秒钟都会访问数据库以进行查找 - 在发布页面上打开每个页面。
这是一个低用户(目前低于100 - 但这可能会增加),低频率应用程序,因此不太可能同时在该页面上只有一手牌,但仍然 - 它不会需要很多。
目前全部托管在AWS - micro DB上。
所以我想我的问题是。
1)每个发布页面会话每秒点击一次数据库 - 就是这个 坏?我应该担心吗?
2)点击数据库有哪些替代方法 - 写入文件或内存? (如果我们负载平衡会很糟糕)
3)在mySQL中无法通知PHP事件脚本 表更新有吗?
如果我将它扩展到超过一秒钟,UI进度非常蹩脚(跳过太多信息)。
我可以动态更改更新时间。发布正在进行中的每一秒,当它不是时,下拉到每5或10?
在Node中重写或使用单独的通知服务器实际上不是一个选项 - 我只想为长时间运行的脚本进行简单的进度事件!!
任何建议都非常感谢。
米
答案 0 :(得分:0)
1)每个发布页面会话每秒点击一次数据库 - 这是不是很糟糕?我应该担心吗?
如果您的用户群增长,这可能会快速终止您的数据库。
2)点击数据库有哪些替代方法 - 写入文件或内存? (如果我们负载平衡会很糟糕)
文件最简单。虽然您可能会使用SQLite并将您的主数据库排除在此特定问题的等式之外。
3)当mySQL表更新时,无法通知PHP事件脚本吗?
当然,有一种迂回的方式。让事件脚本监听对MySQL数据库更新时写入的缓存文件的更改。