找回密码
 加入
搜索
查看: 8121|回复: 16

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

 火.. [复制链接]
发表于 2012-8-9 14:58:41 | 显示全部楼层 |阅读模式
服务器端-----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. 求代码修正。。。。
发表于 2012-8-9 15:30:22 | 显示全部楼层
网络慢吧。。。。
 楼主| 发表于 2012-8-9 17:43:06 | 显示全部楼层
140*50Bit=7000Bit..
应该不会造成网络阻塞啊。
 楼主| 发表于 2012-8-10 10:21:10 | 显示全部楼层
没有兄弟有遇到过类似的问题?
发表于 2012-8-10 10:49:42 | 显示全部楼层
采用数据库吧。。你这种共享的方式有没有可能打开文件存在占用。。后来打不开。。还可能数据覆盖的总题。。
 楼主| 发表于 2012-8-11 09:34:20 | 显示全部楼层
确实有可能会文件存在占用的情况,但纳闷了,我的程式在写完文件以后,都会断开网络连接并关机了。哪个进程还会去占用到文件呢?
还有就是这文件占用有没有办法测试什么的?
发表于 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
发表于 2012-8-11 17:38:47 | 显示全部楼层
我在本机打开文件写也出现这种问题
发表于 2012-8-12 14:05:13 | 显示全部楼层
原来 FileFlush函数这样用,学习了
发表于 2012-8-13 20:44:43 | 显示全部楼层
原来 FileFlush函数这样用,学习了
xiaowo 发表于 2012-8-12 14:05


我是不是说错了,我是小白,高人指点,以免我误人
 楼主| 发表于 2012-8-14 09:53:57 | 显示全部楼层
回复 10# duck904

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

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

再次感谢,如有最新测试结果,一定即时通报:)
 楼主| 发表于 2012-8-15 23:44:43 | 显示全部楼层
回复 7# duck904

测试了,还是不行,数据上传上去时,要等个半分钟才能打开。明明几十个字节的东西...难道真的和WINDOWS的共享机制有关系?
 楼主| 发表于 2012-8-22 09:32:23 | 显示全部楼层
木有人有顶?自己来顶一顶啦....
发表于 2012-8-22 12:47:22 | 显示全部楼层
回复 1# kingfirekkk


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

评分

参与人数 1金钱 +40 收起 理由
502762378 + 40

查看全部评分

 楼主| 发表于 2012-8-24 11:01:01 | 显示全部楼层
回复 14# qqgghh1

兄弟的建议引发深思,确认没有考虑到这些问题点...回头再排查排查一下..
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-15 12:34 , Processed in 0.090207 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表