MS RFC 66:更好地处理临时文件¶
- 日期
2011-01-12
- 作者
Alan Boudreault(aboudreault,位于mapgears.com)
- 作者
丹尼尔·莫里塞特(dmorissette at mapgears.com)
- 最后编辑
2011-01-12
- 状态
2011-01-17通过
- 版本
MAPServer 6
概述¶
目前,我们在Web可访问的imagepath目录中写入一些临时文件,这是一种糟糕的做法,但对于过去的某些用途(例如,在处理时写入connectiontype wms和wfs响应)仍然可以,但是随着对临时文件需求的增加,我们需要确保以适当和安全的方式处理临时文件。
这是一个更好地处理临时文件的建议。目标是添加配置临时路径的能力。
建议的解决方案¶
文件仍将写入磁盘。临时路径可以通过以下两种方式设置:
环境变量ms_temppath。
在 Mapfile 中
WEB
TEMPPATH "/tmp/"
END
如果未设置临时路径,函数将根据操作系统尝试标准路径。“/tmp/”用于Linux/Mac,而“c:/temp”用于Windows。大部分工作将是修改mstmpfile函数。
临时文件的目的¶
map context.c:从URL加载ogc web map上下文格式
mapgdal.c:mssaveimagegdal()临时文件…实现内存支持
mapkmlrenderer.cpp文件:
合并栅格缓冲区
创建图标图像
创建一个包含kml文件的zip文件。使用cpl-zip-api。
mapogcfilter.c:应用筛选器后保存 Mapfile (仅限调试)
地图编号:
保存SLD文件。
应用SLD后保存 Mapfile (仅限调试)
下载URL引用的符号并创建pixmap
图:
创建zip文件(从查询写入)
创建临时目录(从查询写入)
mapscript/php/image.c:保存Web图像
mapwfslayer.c:保存GML文件
mapwmslayer.c:保存临时请求输出文件
受影响的文件¶
maputil.c:mstmpfile函数。
调用mstmpfile()的所有文件。
未来的增强¶
默认行为可以更改为在内存中写入临时文件。只有在MAPServer是用gdal/cpl构建的,它具有虚拟IO支持时,这一点才可用。这比在磁盘上写文件更有效。虚拟文件系统接口方法将基于RFC 62 CPL Services 实现,它已经使用内存文件。
这需要实现一些通用函数(或使用msio*函数),以便在可用时使用cpl函数打开/读取/写入/关闭文件。内存文件只能由CPL服务处理。
此增强水泥不是当前RFC的一部分,需要另一个RFC。
投票历史¶
2011-01-17通过,史蒂文+1,丹尼尔,法兰克,阿塞法伊,佩里克莱斯