我使用运行PHP的IIS7网络服务器和ping.exe来ping我们客户的互联网地址。为了让pinging同时运行,我做了以下几点:
但是,我希望脚本执行一些更多的处理步骤(例如,为该批次生成平均值),同时为该批次的所有IP进行ping操作。
问题在于,由于回复时间和地址数量不同,我不知道所有同时发生的事情都已完成。
最好的方法是什么?要让batch.php启动pinglist.php,然后使用while循环查询数据库,如果该批次的所有结果都是每隔x毫秒?
请指教。感谢。
答案 0 :(得分:2)
使用升序号作为批次标识符。让batch.php将两个参数传递给pingip.php - 批处理和要ping的IP:
$batch = time(); // or whatever
foreach ($ips as $ip) {
echo "start php pingip.php $batch $ip";
}
pingip.php脚本应该将批次编号和ping结果写入db。确保批号字段上有索引。然后,您可以使用以下命令查找最近运行的批次编号:
SELECT MAX(batch) FROM pings
您可以通过以下方式查找最后一批中是否有任何错误:
SELECT COUNT(*) FROM pings WHERE batch = $batch AND <whatever>
你可以找到平均值:
SELECT AVG(ping) FROM pings WHERE batch = $batch
只要批次字段上有索引,每个查询都会非常快。我不打算分成两个表,这只是不必要的工作。