[提问]------文件写入服务器后要隔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. 求代码修正。。。。 网络慢吧。。。。 140*50Bit=7000Bit..
应该不会造成网络阻塞啊。 没有兄弟有遇到过类似的问题? 采用数据库吧。。你这种共享的方式有没有可能打开文件存在占用。。后来打不开。。还可能数据覆盖的总题。。 确实有可能会文件存在占用的情况,但纳闷了,我的程式在写完文件以后,都会断开网络连接并关机了。哪个进程还会去占用到文件呢?
还有就是这文件占用有没有办法测试什么的? 本帖最后由 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 我在本机打开文件写也出现这种问题 原来 FileFlush函数这样用,学习了 原来 FileFlush函数这样用,学习了
xiaowo 发表于 2012-8-12 14:05 http://www.autoitx.com/images/common/back.gif
我是不是说错了,我是小白,高人指点,以免我误人 回复 10# duck904
哈哈,谢谢兄弟,马上弄去试试,这几天为这事情都没有头绪,行不行试了就知道啦。
原本用数据库应该是可以解决这问题的,但数据库毕竟太麻烦了....
再次感谢,如有最新测试结果,一定即时通报:) 回复 7# duck904
测试了,还是不行,数据上传上去时,要等个半分钟才能打开。明明几十个字节的东西...难道真的和WINDOWS的共享机制有关系? 木有人有顶?自己来顶一顶啦.... 回复 1# kingfirekkk
" 问题来了,到了服务器上面,有些档案会很顺利的写进去了,有些档案在DOS下面用type 文件名.txt时,打不开....要等2~3分钟才能看到里面的内容.."
---1.那你实际连到服务器共享文件夹下看记录有没有上去呢,而不是DOS下TYPE。
2.FileWrite中你用了很多变量,是否得到这些变量的值需要时间(要执行其它函数)
3.ping 服务器看是否有丢包或延迟情况 回复 14# qqgghh1
兄弟的建议引发深思,确认没有考虑到这些问题点...回头再排查排查一下..
页:
[1]
2