我有一个链接,将允许用户点击它,它会获取照片的zip文件。如果该zip文件不存在,则它会启动一个线程来创建该zip文件,并向用户显示一条消息,指出该照片当前正在处理中。ColdFusion性能和锁定优化
我试图避免的是用户反复点击链接,并设置了大量的线程,将尝试创建/更新zip文件。压缩文件处理是相当系统资源密集型的,所以我只想让应用程序一次生成一个压缩文件。如果一个人忙于编译,它应该什么也不做,并排队请求。
目前我是怎么处理它与螺纹围绕CFLOCK:
<cflock name="createAlbumZip" type="exclusive" timeout="30" throwontimeout="no">
<cfthread action="run" albumId="#arguments.albumId#" name="#CreateUUID()#">
....
什么我希望在这里发生(这似乎是工作,如果我测试它)是,它会检查是否有目前是使用名为'createAlbumZip'的锁运行的线程。如果有,它会将请求排队30秒,之后它应该超时而没有任何错误。如果它无法在30秒内完成创建。
所以 - 这似乎是工作,但我的问题是:这是处理这种情况的最佳方式?锁定正确的方法?我没有看到这种方法可能产生的缺点吗?
因此,如果用户多次点击链接(比方说100)来生成zip,是不是会创建100个线程,如果是的话,那么效率如何? – Cheeky 2012-03-09 10:33:13