kingfirekkk 发表于 2012-8-9 14:58:41

[提问]------文件写入服务器后要隔1~2分钟,才能打开内容

服务器端-----Redhat +SMB共享(可写入权限)
客户端--------Winxp/Win7(约140台左右的客户机)

小弟写了一个小程式,将生产测试的一个OK的记录写入到服务器的可写共享目录里面,文件很小,只有几百个字节,以下为写数据模块的源代码:
Func databas()
        Local $filename
        $filename = "\\" & $server & "\" & $share & "\" & StringReplace($mymac, ":", "") & ".txt"
        If FileWrite($filename, tnow() & "," & $id & "," & StringUpper($name) & "," & StringReplace($mymac, ":", "") & "," & "WXP,OK" & "," & GUICtrlRead($Input2) & @CRLF) Then
                If FileExists($filename) And FileGetSize($filename) > 20 Then
                        Return 1
                Else
                        Return 0
                EndIf
        Else
                Return 0
        EndIf
EndFunc   ;==>databas

问题来了,到了服务器上面,有些档案会很顺利的写进去了,有些档案在DOS下面用type 文件名.txt时,打不开....要等2~3分钟才能看到里面的内容..

因为时效性比较强,不说秒秒钟更新,至少半分钟内这档案要能够读取...因为20秒钟后就会有另外一台电脑来确认这个测试记录,如果打不开,就认为前面的这一个记录不存在...

求解:
1. 产生此种现象的大致原因;
2. 求代码修正。。。。

shinco1 发表于 2012-8-9 15:30:22

网络慢吧。。。。

kingfirekkk 发表于 2012-8-9 17:43:06

140*50Bit=7000Bit..
应该不会造成网络阻塞啊。

kingfirekkk 发表于 2012-8-10 10:21:10

没有兄弟有遇到过类似的问题?

auto 发表于 2012-8-10 10:49:42

采用数据库吧。。你这种共享的方式有没有可能打开文件存在占用。。后来打不开。。还可能数据覆盖的总题。。

kingfirekkk 发表于 2012-8-11 09:34:20

确实有可能会文件存在占用的情况,但纳闷了,我的程式在写完文件以后,都会断开网络连接并关机了。哪个进程还会去占用到文件呢?
还有就是这文件占用有没有办法测试什么的?

duck904 发表于 2012-8-11 16:16:32

本帖最后由 duck904 于 2012-8-11 16:25 编辑

试试在Func退出前加句,FileFlush ( 句柄 )Func databas()
      Local $filename,$hFile
      $filename = "\\" & $server & "\" & $share & "\" & StringReplace($mymac, ":", "") & ".txt"
      $hFile = FileOpen($filename,1)
      If FileWrite($hFile, tnow() & "," & $id & "," & StringUpper($name) & "," & StringReplace($mymac, ":", "") & "," & "WXP,OK" & "," & GUICtrlRead($Input2) & @CRLF) Then
                FileFlush ( $hFile )
                FileClose ( $hFile )
                If FileExists($filename) And FileGetSize($filename) > 20 Then
                        Return 1
                Else
                        Return 0
                EndIf
      Else
                FileClose ( $hFile )
                Return 0
      EndIf
EndFunc   ;==>databas

ebhb 发表于 2012-8-11 17:38:47

我在本机打开文件写也出现这种问题

xiaowo 发表于 2012-8-12 14:05:13

原来 FileFlush函数这样用,学习了

duck904 发表于 2012-8-13 20:44:43

原来 FileFlush函数这样用,学习了
xiaowo 发表于 2012-8-12 14:05 http://www.autoitx.com/images/common/back.gif

我是不是说错了,我是小白,高人指点,以免我误人

kingfirekkk 发表于 2012-8-14 09:53:57

回复 10# duck904

哈哈,谢谢兄弟,马上弄去试试,这几天为这事情都没有头绪,行不行试了就知道啦。

原本用数据库应该是可以解决这问题的,但数据库毕竟太麻烦了....

再次感谢,如有最新测试结果,一定即时通报:)

kingfirekkk 发表于 2012-8-15 23:44:43

回复 7# duck904

测试了,还是不行,数据上传上去时,要等个半分钟才能打开。明明几十个字节的东西...难道真的和WINDOWS的共享机制有关系?

kingfirekkk 发表于 2012-8-22 09:32:23

木有人有顶?自己来顶一顶啦....

qqgghh1 发表于 2012-8-22 12:47:22

回复 1# kingfirekkk


   " 问题来了,到了服务器上面,有些档案会很顺利的写进去了,有些档案在DOS下面用type 文件名.txt时,打不开....要等2~3分钟才能看到里面的内容.."
---1.那你实际连到服务器共享文件夹下看记录有没有上去呢,而不是DOS下TYPE。
2.FileWrite中你用了很多变量,是否得到这些变量的值需要时间(要执行其它函数)
3.ping 服务器看是否有丢包或延迟情况

kingfirekkk 发表于 2012-8-24 11:01:01

回复 14# qqgghh1

兄弟的建议引发深思,确认没有考虑到这些问题点...回头再排查排查一下..
页: [1] 2
查看完整版本: [提问]------文件写入服务器后要隔1~2分钟,才能打开内容