各サービスの状態をデータベース (0 : オンライン / 1 : 機能停止 / 2 : オフライン / 3 : 不明) に送信する、ホスティング プラットフォーム上のさまざまなサービスの状態をチェックするためのスクリプトを開発しています。
次のエラーが表示されます: Notice: Undefined index: in /home/cuonicco/public_html/olympe/inc/updatestatus.php 行 164
これがコードです。いくつかの部分を切り取っています(他の3つの異なる検証):
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
$info = array();
$data = array();
$mysqli = new mysqli("*********", "*********", "*********", "*********");
$query = $mysqli->prepare("SELECT name, status FROM olympe");
$query->bind_result($name, $status);
$query->execute();
$query->store_result();
$count = $query->num_rows;
if($count > 0)
{
while($query->fetch())
{
$info[$name]['status'] = $status;
}
}
$query->close();
// Verification Panel :
$panel = curl_init("https://hosting.olympe.in/login");
curl_setopt($panel, CURLOPT_TIMEOUT, 10);
curl_setopt($panel, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($panel, CURLOPT_HEADER, FALSE);
curl_setopt($panel, CURLOPT_RETURNTRANSFER, TRUE);
$result = curl_exec($panel);
$http_status = curl_getinfo($panel, CURLINFO_HTTP_CODE);
curl_close($panel);
if($http_status == 200)
{
$data['panel']['status'] = 0;
}
elseif($http_status == 500)
{
$data['panel']['status'] = 1;
}
else
{
$data['panel']['status'] = 2;
}
// Verification HTTP :
$http = curl_init("http://cuonic.olympe.in/status/test-http.php");
curl_setopt($http, CURLOPT_TIMEOUT, 10);
curl_setopt($http, CURLOPT_HEADER, FALSE);
curl_setopt($http, CURLOPT_RETURNTRANSFER, TRUE);
$result = curl_exec($http);
$http_status = curl_getinfo($http, CURLINFO_HTTP_CODE);
curl_close($http);
if($http_status == 200)
{
$data['http']['status'] = 0;
}
else
{
$data['http']['status'] = 2;
}
// More verification functions...
// ....
// Database updating :
$array_count = count($data);
$i = 0;
while($i <= $array_count)
{
$name = key($data);
$array = current($data);
if($info[$name]['status'] != $data[$name]['status']) // Error occurs here
{
$query = $mysqli->prepare("INSERT INTO log (name, previous, latest) VALUES (?, ?, ?)");
$query->bind_param("sii", $name, $info[$name]['status'], $data[$name]['status']);
$query->execute();
$query->close();
}
$query = $mysqli->prepare("UPDATE olympe SET status = ? WHERE name = ?");
$query->bind_param("is", $data[$name]['status'], $name);
$query->execute();
$query->close();
next($data);
$i++;
}
?>
何が原因なのか、一日中悩まされています。「エラー行」の前に配列の値をエコーアウトしましたが、それらはすべて存在します。
前もって感謝します :)