使用基于图像的持久性和使用 Seaside 保存时网页超时?

Web page times out when using Image based persistence and saving with Seaside?

我正在使用代码 here 在创建新用户时保存图像(持久性章节)

saveImageWithoutMonitor

 SmalltalkImage current saveSession.


writeMutex

 ^ WriteMutex ifNil: [WriteMutex := Monitor new]

问题是保存图像需要时间,我怀疑端口 8080 上的 Seaside 无法访问,浏览器尝试请求下一页但连接失败。有更好的方法吗?或者配置 Seaside 延迟页面响应?

PS。我记得你必须在 Seaside 的配置页面中配置它,它会等待。

在保存图像期间,关闭和启动列表将被处理,在此期间所有套接字将被销毁,因此连接被取消。我们所做的是分叉图像(使用 OSProcess)并在子进程中进行保存。甚至还有一种方法可以为您完成此操作,请参阅 OSProcess>>saveImageInBackground

旁注:使用这样的分叉进程时会出现一些竞争条件。如果您正在处理负载,则可能会发生子进程 "steals" 来自父进程的套接字,这将导致连接超时。为了防止这种情况,您需要在 fork 操作期间关闭套接字,这不是一个容易解决的问题。