Ниже приведен пример использования текстового файла в соответствии с запросом. Несколько примечаний:
- Для простоты я предлагаю использовать CURL вместо
exec
, так как это должно быть намного быстрее и надежнее. Это проверяет код состояния HTTP «200», что означает, что он вернул действительный запрос.
- Вам нужно будет убедиться, что у вашего текстового файла есть соответствующие разрешения для чтения &.
- Я обновил этот ответ, а также адрес your other question.
Исходный текст файл в этом примере назван data.txt
и содержит следующее:
p1|google.com|
p2|yahoo.com|
p2|amazon.com|
Следующего код будет перебирать каждый сервер в списке, и обновлять записи с последней если он в сети.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="refresh" content="30">
</head>
<body>
<h1>PC Test Ping Status</h1>
<?php
function ping($addr) {
$ch = curl_init($addr);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//get response code
curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($code === 200) {
return true;
}
return false;
}
$file = 'data.txt';
$servers = array_filter(explode("\n", file_get_contents($file)));
foreach ($servers as $key => $server) {
list($sname, $saddr, $suptime) = explode('|', $server);
if (ping($saddr)) {
echo "<p>$sname is online</p>";
$date = new DateTime();
$suptime = $date->format('Y-m-d H:i:s');
} else {
echo "<p>$sname is offline since: ";
if (trim($suptime) !== '') {
echo $suptime . '</p>';
} else {
echo 'unknown</p>';
}
}
$servers[$key] = implode('|', array($sname, $saddr, $suptime)) . "\n";
}
file_put_contents($file, $servers);
?>
</body>
</html>
Используйте [ 'DateTime'] класс (http://php.net/manual/en/datetime.construct.php), и сохранить значение в сессии или базе данных. –
Может ли это быть сохранено в файле как txt? –
есть. текстовый файл можно рассматривать как еще одну форму базы данных. –