0

使用 Classic ASP (stop tutting),我需要构建一个应用程序,将高分辨率照片从一台服务器传输到另一台服务器,准确地说,大约 360,000 张包括缩略图。该应用程序将通过 Windows 计划调用,并将作为后台进程运行。

实现这一目标的最佳方法是什么,同时牢记性能?上次我构建一个像这样的怪物脚本是传输和转换超过一百万行的数据库表时,应用程序启动非常快,但是在 25,000 条记录之后它变得非常非常慢!所以我想避免这种情况。

很明显会是跨域传输,所以我在想用一个ASP/FTP组件,一个接一个,抓取一个文件,发送,成功记录在一个DB表中,这样它就知道有什么了到目前为止完成。

最好一次处理一个文件并刷新,这样就不会滥用服务器的资源,还是一次处理1000个,或者更多?我希望它尽可能快,但不会阻塞服务器。

任何帮助/建议将不胜感激。

4

3 回答 3

1

我有类似的东西在经典 ASP 中运行,它可以毫无问题地处理一万张图像。在包含图像的服务器上,我为每个图像运行一个(vbs)脚本

  1. 使用元数据制作文本文件
  2. 在第二个(网络)服务器上制作缩略图和中等大小的图像副本

该脚本连续运行,如果文件存在于网络服务器上,则仅检查每个文件夹和文件,如果没有创建它们,则不需要数据库。在每次检查之间它会休眠一秒钟。这样服务器上的负载只有 2%。我在命令行方式中使用 iPhoto 来提取元数据和图像,但您可以使用库。因此,这三个文件以来自第一台服务器的地图结构副本的形式存储在网络服务器上,但没有完整尺寸的图像。

在网络服务器上,您只需要能够浏览缩略图并可视化元数据和中等大小的图像。如果用户需要完整尺寸的图像,他会单击第一台服务器上的文件作为 url 的中型图像。

于 2012-01-25T16:16:39.610 回答
1

我认为最好一次处理一个文件,因为如果连接在短时间内断开,您不会丢失已发送的文件。

即使您使用 ASP Classic,您也可以利用 .net 使用 .net 中的 FTP 客户端类上传文件,并避免购买/安装第三方组件。当然.net 已经安装在服务器上。

我的过程将如下所示:

  1. 使用 FTP 上传 1 个文件(性能更好)
  2. 如果成功调用在远程数据库中记录操作的 ASP 页面
  3. 如果上传出错,请稍等,最多重试 3 次
  4. 继续下一个文件

如果进程阻塞了服务器,您可以在每次上传之间短暂暂停。

于 2012-01-24T20:04:19.547 回答
0
  • 通过 FTP 上传所有文件
  • 创建包含所有数据的 CSV 文件
  • 一口气将其拉入数据库

超过 360,000 个单独交易的网络握手量将成为瓶颈。

于 2012-01-24T17:13:28.987 回答