使用PHP或Javascript获取服务器状态
Get server status with PHP or Javascript?
我一直在尝试让一个工作的服务器状态脚本工作,但没有成功。有一个社区自己经营一家看起来很酷的公司,我想知道是否有人能帮我?
我浏览了StackOverflow网站,但似乎大多数都不起作用。
使用PHP,可以使用shell_exec
命令有效地ping特定IP,然后确定它是否联机。如果后端在Linux上运行,这应该可以工作:
$offline = shell_exec("ping -c 1 8.8.8.8 | grep -c '0 received'");
如果离线,或第一个数据包丢失,则上述值将返回1;如果online或第一个包收到则返回0。它不考虑数据包丢失。
另一种选择是注册一个真正可靠和冗余的监控服务,该服务具有API,并通过它将状态获取到您的站点。根据您的实际需求,这可能会更加可靠。
从按需脚本中轮询服务器状态通常是一个非常糟糕的主意。如果对脚本的需求很高,您将无休止地探查服务器(稍后我们将返回"ping"),这充其量是非常低效的,并且很容易被用来对服务器发起反射式拒绝服务攻击。无论流量大小,响应时间都会非常慢,因为每个实例都会轮询每个服务器。如果服务器不可用,则情况会变得更糟,因为您需要等待超时来确定其状态(浏览器为此使用自适应超时,而不是操作系统默认超时)。
一个更好的解决方案是安排探测来检查状态——这就是BMC Patrol和Nagios等工具用于服务监控的方式。
关于轮询服务的方法,虽然通常是真的,如果你不能ping节点,那么你将无法访问它应该提供的服务,但这并不意味着如果你能ping服务器,你就可以访问它的服务。在服务套接字上执行TCP握手将更准确地描述服务是否可用。但是,如果您在不交换任何数据的情况下重复连接到他人的服务器,这可能会被管理员视为拒绝服务攻击,因此您的IP将被列入黑名单。也就是说,你可能应该和运行服务器的人交谈(如果不是你自己)。
只有当服务器正在使用HTTP时,从javascript进行探测才能工作。可以从错误返回的时间推断端口的状态(例如,在谷歌上搜索"portscan javascript"),但同样,除非你知道网络和服务器是如何配置的,否则结果不会是决定性的。
- Nodejs服务器:加载资源失败:服务器的响应状态为404(未找到)
- 使用PHP或Javascript获取服务器状态
- AJAX错误状态代码500内部服务器错误
- 带Jquery的wep API,加载资源失败:服务器响应状态为404(未找到)
- 从服务器到客户端的响应状态
- AngularJs $http postsuccessCallback 导致页面重定向,即使服务器以 200 状态响应也
- XMLHttpRequest 状态 2 等待来自服务器的响应
- 关于服务器配置的主干和推送状态
- 加载资源失败:服务器使用 nodejs 以状态 404(未找到)进行响应
- 如果服务器崩溃,如何跟踪用户的“在线”状态
- 断开连接的客户端在具有 websocket 的 Openfire 服务器上保持联机状态
- Strophe.js服务器发送不可用状态,即使对于当前正在主动聊天的用户也是如此
- 无法加载资源:服务器以状态 404(未找到)https://websitename.herokuapp.com/js/b
- 无法加载资源:服务器在绑定功能中以状态 500(内部服务器错误)进行响应
- 从服务器加载 html 和控制器并创建动态状态 UI - 路由器
- Ajax/JSON服务器的响应状态为415(不支持的媒体类型)
- Backbone.js只有在服务器成功(200状态)时才会添加到集合中
- 使用AJAX和PHP返回远程服务器状态
- 服务器状态维护模式标志w/ D2L
- 404/401服务器状态响应的安全中断