解析为网站

本文关键字:网站 | 更新日期: 2023-09-27 18:16:16

我有一个我生成的文件(文本或csv),它有一个零件编号列表。我需要拿着这个清单,自动下载一些这些零件的规格表,然后打印出来。一旦在网站上,我需要输入零件号,然后打印结果。最好的方法是什么?

好了,各位,这是我之前所做的,但是将进度4gl(版本9.1)数据库处理到Unix Red-Hat服务器上的QAD环境v8.6e需要一个多小时:

FNAME=`date +%y%m%d%H%M%S`
echo requiredmcpartno=$1 | lynx -accept_all_cookies -nolist -dump -post_data 75.144.##.###/specdata/specdata.asp 2>&1 | tee $FNAME | lp -d$2   >>/apps/proedi/####/ftp/log/brownart.log
grep "Unit of Issue" $FNAME | cut --delimiter=: --fields=2 | awk '{print $1}'
grep -q "PACKAGING SPEC IS OBSOLETE FOR THIS PART NUMBER" "$FNAME"
if [ $? -eq 0 ]; then
  echo 0
  echo nopic
  exit
fi
cd /apps/proedi/####/ftp/ftpscripts
rm -fr 184.168.##.###/ 75.144.##.###/ www.google-analytics.com/ 2>&1   >>/apps/proedi/####/ftp/log/brownart.log
wget -p -m -k -K -E -H --cookies=on --post-data="requiredmcpartno=$1"   75.144.##.###/specdata/specdata.asp >/dev/null 2>&1
/apps/proedi/####/ftp/ftpscripts/printspec.sh $1 $2 >>/tmp/printspec.log 2>&1
cat /apps/proedi/####/ftp/ftpscripts/"$1".pt
rm -f /apps/proedi/####/ftp/ftpscripts/"$1".pt
 >>/apps/proedi/####/ftp/log/brownart.log
rm $FNAME 2>&1 >>/apps/proedi/ford/ftp/log/brownart.log

然后打印tspec.sh脚本:文件= 184.168.70.174/partandpackagingphotos/PhotoDetailsSpecdata.aspx ' ? p ' html

= 1.美元
if [ ! -f "$file" ]; then
  echo nopic >/apps/proedi/ford/ftp/ftpscripts/"$1".pt
  exit
fi
grep -q "No Pictures Available for this Part Number" "$file"
if [ $? -eq 0 ]; then
  echo nopic >/apps/proedi/ford/ftp/ftpscripts/"$1".pt
  exit
fi
html2ps -i .7 184.168.70.174/partandpackagingphotos/PhotoDetailsSpecdata.aspx'?p'=$1.html | lp d$2 -s
echo picfnd >/apps/proedi/ford/ftp/ftpscripts/"$1".pt

在Unix中,wget命令需要很长时间才能处理。我们的客户可能每天8-9次发送150-200个零件的运输文件给我们,我们需要在每次收到零件时下载每个零件相关的所有图片。
我想只是制作一个平面文件(文本或csv),然后让用户在他们的windows计算机上运行批处理文件以连接到unix服务器,并将文件下载到他们的计算机上。在此之后,然后有相同的批处理作业,或excel模板或在windows端下载图片并将规格表打印到默认打印机。

很抱歉没有一开始就把这些都贴出来。

解析为网站

我要尝试的第一件事是将流程分解为两个或多个独立的部分,并并行运行它们。上面的脚本似乎以零件号作为参数。我猜,无论给他们提供什么,零件号都是从一个列表中工作的("运输文件"?)这个列表显然是进行分割的地方。

如果你这样做,并发进程的数量是可配置的,应该很容易找到"最佳点"。假设要下载的部件列表位于一个名为"part"的表中,其中包含字段"needsDownload"answers"partNum"。为了简单起见,我们假设partNum是一个整数,需要下载的实际部件号是随机分布的。如果你用Progress 4GL代码驱动这个过程,你可能会写一个像这样的控制程序:

/* control.p
 *
 * to run two "threads":
 *
 *   _progres -b dbName -p control.p -param "1,2" > control.1.log 2>&1 &      # 1 of 2
 *   _progres -b dbName -p control.p -param "2,2" > control.2.log 2>&1 &      # 2 of 2
 *
 *
 */  
define variable myThread   as integer no-undo.
define variable numThreads as integer no-undo.
myThread   = integer( entry( 1, session:parameter )) - 1.  /* this just allows the "1 of 2" stuff to be more "human sensible" */
numThreads = integer( entry( 2, session:parameter )).
for each part exclusive-lock where needsDownload = true and (( partNum modulo numThreads ) = myThread ):
  os-command value( "getpart.sh " + string( partNum )).
  needsDownload = false.
end.

当然问题可能是外部系统太慢了。你再怎么编程也解决不了这个问题。