Это мои настройки:
Я запускаю cronjob у себя дома, используя raspberry pi 3. Каждую 1 минуту этот cronjob запускает php-файл, который требует работающего подключения к Интернету.Чтобы проверить, работает ли интернет у меня дома (привередливый интернет), я изменил и реализовал следующую функцию в начале моего файла:
function is_connected_true_false()
{
$multiple_domains = array('www.example.com', 'www.google.com', 'www.bing.com');
$random_domain_used = $multiple_domains[rand(0,2)];
$connected = @fsockopen($random_domain_used, 80, $errno, $errstr, 10);
if($connected) {
$is_conn = true;
fclose($connected);
} else {
$is_conn = false; //action in connection failure
// Log error to the server
//$errno; // Error #
//$errstr; // Error as a string
}
return $is_conn;
}
Пока это работает, но я верю, что будустолкнуться с некоторыми проблемами в будущем.
Этот cronjob запускает файл php каждую 1 минуту!Это 1440 запросов веб-сайта в день!из моего дома ip.
Я добавил как минимум 3 разных домена, я не хочу, чтобы мой ip попал в черный список.Я выбираю эти 3 домена из-за их надежности и времени загрузки.
Также кажется, что загрузка страниц занимает некоторое время (иногда несколько секунд, привередливый интернет ...).
ТамВероятно, более широкое использование полосы пропускания при открытии всего сайта, а не при пингеЯ не могу использовать (код возврата / состояние выхода) при вызове веб-сайта x из-за длительного требуемого значения времени ожидания.В противном случае, я бы использовал это.
Решение / Улучшение?
Могу ли я пропинговать сервер 8.8.8.8 или любой другой надежный сервер вместо полной загрузки веб-сайта, чтобы проверить, работает ли интернет?Если так, то как?Могу ли я достичь того же результата, что и в текущей функции?
Я пробовал 8.8.8.8 вместо доменов сайта, но, похоже, он не работает.Не знаю почему.
Другое: Пожалуйста, имейте в виду, PHP любитель здесь.Хотя я провел некоторые исследования, я не разбираюсь в сетевых протоколах, TCP, HTTP, ICMP, пакетах и подобных вещах, но все же!
Источник, откуда я получил код: Определить в phpскрипт, если он подключен к интернету?
РЕДАКТИРОВАТЬ: -ochi предложила мне вместо этого купить или арендовать услуги хоста / VPS.Это может сработать.Тем не менее, я считаю, что есть лучший способ.спасибо.
EDIT2: я обнаружил, что пинг к серверу использует другой протокол или порт, чем HTTP-запрос, как я могу убедиться, что порт 80 работает?Должен ли я просто добавить больше сайтов в мой массив функций для распределения трафика / запросов?