свернуть URL-адрес из базы данных и опубликовать время на веб-странице - PullRequest
0 голосов
/ 28 января 2019

Итак, в настоящее время я пытаюсь пинговать URL-адреса в таблице базы данных, которая затем должна публиковать статус 'LIVE' или 'DOWN' этого URL-адреса на веб-странице, если эхо-запрос был успешным.он настроен как массив php с fsocket, который работал.

В настоящее время, когда я использую код, показанный ниже, он извлекает данные из таблицы БД, но значок постоянно показывает 'LIVE' или 'DOWN'показывает 'DOWN'.

<?php
require_once "config/config.php";

$sql = "SELECT * FROM deployments";
 if($result = mysqli_query($link, $sql)){
 if(mysqli_num_rows($result) > 0){
  echo "<tr>";
  echo "<th>Server</th>";
  echo "<th>Deployment</th>";
  echo "<th>URL</th>";
  echo "<th>Status</th>";
  echo "<th>Port</th>";
  echo "</tr>";
while($row = mysqli_fetch_array($result)){
  echo "<tr>";
  echo "<td>" . $row['server'] . "</td>";
  echo "<td>" . $row['name'] . "</td>";
  echo "<td>" . $row['url'] . "</td>";
   $url = $row['url'];
   $port = $row['port'];
   $url = '$url';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_exec($ch);
$retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if (200==$retcode) {
  echo "<td><span class='badge badge-success'>LIVE</span></td>";
} else {
  echo "<td><span class='badge badge-danger'>DOWN</span></td>";
}
  echo "<td>" . $row['port'] . "</td>";
  echo "</tr>";
}
// Free result set
mysqli_free_result($result);
} else{
  echo "No records matching your query were found.";
}
} else{
  echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
?>

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Поскольку вам просто нужно определить, активен ли конкретный URL-адрес или нет, у меня будет соблазн использовать get_headers ~ это довольно быстро

$url='https://www.google.com';
$headers = get_headers( $url, 1 );
$active = !empty( $headers );
if( $active ){/* do stuff */}

Или, поместите его в функцию

<code>function get_status( $url ){
    $headers = @get_headers( $url, 1 );
    return !empty( $headers );
}

$url = 'http://www.holycatflap.com';

$status = get_status( $url ) ? sprintf( '"%s" is UP!',$url ) : sprintf( '"%s" DOWN',$url );
printf("<pre>%s
", $ status);

выходы:

"http://www.holycatflap.com" DOWN
0 голосов
/ 28 января 2019

$ url = '$ url';

Эта строка не должна быть там.И если он там, то для работы нужны двойные кавычки.

Одиночные и двойные кавычки в php работают по-разному.Переменная $ не будет работать так, как вы ожидаете, если она заключена в одинарные кавычки.

<?php
//Example of how php treats a string in double quotes
$strFirstName="John";
echo "$strFirstName";

?>

<?php
//Example of how php treats a string in single quotes
$strFirstName="John";
echo '$strFirstName';

?>

Первый пример будет работать, как и ожидалось, но второй будет буквально выводить '$ strFirstName' вместо 'John«

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...