还是上次那事儿,虽然不报错了,但是我发现了新问题。

那个破玩意服务器端不会莫名奇妙的关闭了,但是会失去响应,大概启动一小时后这玩意就会处于假死状态,这时候它可能工作正常,可能工作不正常,是不是在正常工作只有天知道。

于是你只能选择强行杀进程重启,这个破进程失去工作毫无征兆,有时候你看它假死了,没准它还工作的一切正常,有时候你看它假死它就是真死了,我想来想去只能弄个脚本定时杀进程重启了。

网络上关于这玩意的现成东西很多,比较多的是这个:

@echo off

:check socket.exe
tasklist > templist.txt
find /i "socket.exe" templist.txt
if "%errorlevel%" == "1" (goto start) else (goto end)

:end
taskkill /f /im socket.exe

:start
cls
start socket.exe

这个的确是可以工作的,但是对于这玩意有点太繁琐了,其实完全不用写什么 list 还要去找什么进程名称什么的玩意直接强杀就是了。而且这程序还有个操蛋的问题,那就是你在杀掉之后立即重新启动会找不到数据库,必须要等几秒再启动才能正常连接,所以说我就操了这辣鸡玩意了。

于是我索性加一条 Ping 来确保 10 秒后启动算了。

最后的批处理是这样的:

@echo off
taskkill /f /im socket.exe
cls
ping -n 10 127.0.0.1
start socket.exe

放到程序目录下,另外考虑到这玩意 1 小时左右就开始假死,所以服务器端设置计划任务 1 小时运行一次。

目前似乎没什么问题……

选区_886.png

参考连接:
http://blog.sina.com.cn/s/blog_c5e9e36c0102w9xz.html