У меня есть список из 160 URL-адресов в таблице базы данных, и строки отображаются следующим образом:
<?php
require_once "config/config.php";
$sql = "SELECT * FROM deployments";
if($result = mysqli_query($link, $sql)){
if(mysqli_num_rows($result) > 0){
while($row = mysqli_fetch_array($result)){
?>
<tr>
<td> <?php echo $row['id'] ?></td>
<td> <?php echo $row['server'] ?></td>
<td> <?php echo $row['name'] ?></td>
<td> <?php echo $row['url'] ?></td>
<td> <?php echo $row['port'] ?></td>
<td><span class='badge badge-warning'>LIVE</span></td>
<td><a href="config/remove.php?id=<?php echo $row['id']; ?>"><span class="fa fa-trash"></span></a></td>
</tr>
<?php
}
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);
}
?>
Возможно ли использовать fsoc
или curl
для проверки связи с URL, извлеченными изБД после того, как она стала видимой на веб-странице со строкой: <td> <?php echo $row['url'] ?></td>
Я пробовал это, но я не могу заставить его работать, у меня это работало, когда я извлекал данные из массива, ноЯ хочу, чтобы данные поступали из БД.
Когда я пытался curl
, все развертывания показывались как ВНИЗ.
<?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);
}
?>
из массива, это работало:
<?php
$tests = array
(
);
// Set counter
$i = 1;
// For each test create a tr
foreach($tests as $test => $testProperties){
echo "<tr>";
// Display test ID
echo "<td>$i</td>";
echo "<td>".$testProperties[0]."</td>";
echo "<td>".$testProperties[1]."</td>";
if($socket =@ fsockopen($testProperties[1], 80, $errno, $errstr, 1)) {
echo "<td><span class='badge badge-success'>LIVE</span></td>";
fclose($socket);
}
else {
echo "<td><span class='badge badge-danger'>DOWN</span></td>";
}
echo "</tr>";
// Increase counter
$i++;
}
?>
Поэтому, когда fsoc
или curl
отправляет эхо-запрос на URL, извлеченный из <td> <?php echo $row['url'] ?></td>
, это должно обновить строку, которая показывает развертывание DOWN
или UP
Я задал этот вопросодин раз, но на этот раз предоставил больше информации.