最近遇到个项目客户的服务器问题,他的服务器是win的,为了他们能直观操作,因为他们不懂技术活,所以就选择了winserver系统,而且他们是内网部署,很多问题没法远程去检查比较麻烦
这次他们的问题是一段时间后,Apache或者mysql服务会中断,排查了很多次,查看服务器的log都指向说是服务本身中断停止,不是被其他程序干扰,由于能力有限,我查看两个服务的日志也没发现什么异常的地方,然后怀疑是站点代码问题,网站本来能正常运行很久了,最近发现这个中断问题,我作为程序员猜测应该不是代码的问题,反正做了很多配置的修改和尝试,问题依旧存在,我就开始怀疑是win服务器的环境有问题,他们内网也装有其他的一些安防软件,我不太懂桌面软件,因此想到就是暂时的解决办法,定时给这两个服务重启,因为每次停止服务,手工重启服务又能正常运行一段时间,就先这样试试能否规避这个问题
百度查了一下,蛮多资料关于这个定时计划任务的介绍,我就取其精华,结合实际
1.首先我就按照指引测试使用命令行服务能否开启和停止服务,结果发现我本地电脑的PHPstudy服务是绿色安装,所以命令行找不到该服务项的
输入net start mysql,输出的却是
net start mysql; 服务名无效。 请键入 NET HELPMSG 2185 以获得更多的帮助
意思就是说系统没有这个服务项
所以我们首先将要定时任务的服务项加到win的服务里面去先
比如先注册mysql服务到系统
在cmd命令行进入到mysql的bin目录,然后执行命令:mysqld install
如图表示注册成功了!
相同的,可以去Apache的bin目录把Apache也注册服务
命令:httpd.exe -k install
如图表示注册成功了!
接下来就是写个bat脚本让这些服务按顺序停止启动就可以了,即使没有启动的,停止命令会自动忽略掉再走到下一个命令启动,要是本来服务启动了,就相当于执行两条命令,服务本来没启动的话就相当于只执行了启动命令
@ECHO OFF
net stop mysql
net start mysql
net stop Apache2.4
net start Apache2.4
复制上面命令,新建一个TXT文件,粘贴进去,然后该文件格式为bat即可,放在你能找到的位置即可
说明一下,mysql是注册时候的那个服务名称,Apache2.4也是注册时候的名称
然后到电脑的管理工具包中找到计划任务的菜单进去,创建一个新的计划任务,在操作选项卡新建一个操作,设置或脚本那里浏览找到刚才的脚本文件确定即可
任务计划窗口属性中,触发器是设置任务的执行时间相关的,详细可以另行百度有详细教程
设置好以后,可以点击操作栏中的运行按钮测试一下是否出现cmd命令框,出现的话应该会看到运行命令的过程,到这里整个设置就完成了!