【问题标题】:How to understand whether a Windows XP or 7 machine is switched on or off with PHP?如何了解使用 PHP 打开或关闭 Windows XP 或 7 机器?
【发布时间】:2011-10-31 11:12:39
【问题描述】:

我想获取本地网络上哪些计算机在线或离线的列表,但我必须为此使用 PHP、HTML 和 JavaScript。

我在 PHP 中使用带有“ping servername”的exec 命令,但它太慢了,所以我只能得到 7 或 8 个,然后 PHP 给出错误计算机的情况,但我需要 50 台计算机的情况。

我尝试从 \lab4-01\c$ 等所有计算机访问文件,但它在 PHP 或 JavaScript 中不起作用,但我又失败了。

  • 我该如何解决这个问题?

【问题讨论】:

  • 实际验证总是会很慢。你可以例如设置一个服务,每分钟执行一次 ping,然后将结果记录在数据库中,您的 PHP 代码可以从该数据库中读取。
  • 当我使用 db 和 fsockopen 时,它运行良好,但我可以将此功能用于 30 台计算机实验室,但我也设置了一项服务,它运行良好,然后我将使用第一个解决方案用于小型实验室和我将在大学的大型实验室中使用第二种解决方案,感谢所有答案

标签: php javascript cmd


【解决方案1】:

您应该编写一个 cron 脚本,一次测试几台计算机,并使用状态和上次更新时间更新数据库表。该脚本将首先尝试更新那些长时间未更新的计算机。例如,一次有 10 台计算机,您的查询将按 updatetime 排序并限制为 10 台,例如 ORDER BY updatetime LIMIT 10

您的状态页面不应该直接测试计算机,而是从数据库中检索数据,它会以惊人的速度显示出来。

注意不要与 cron 脚本的执行重叠,否则机器运行级别可能会飙升,例如,如果您的 cron 每 X 分钟执行一次,您可以设置较低的最大执行时间

【讨论】:

    【解决方案2】:

    使用 ping 不是一个好主意,因为某些网络会过滤 ICMP 流量。 我会使用 php functin fsockopen(); http://php.net/manual/en/function.fsockopen.php

    【讨论】:

    • 您也可以使用 nmap 命令返回给定网络上每个活动主机的 IP 地址,例如:nmap -sP 192.168.1.0/24 将返回所有活动主机的 IP 地址,您可以使用 cron命令并让你的 php 脚本只解析它的输出
    猜你喜欢
    • 2012-06-27
    • 2011-10-08
    • 2016-12-05
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多