Проблема в том, что file()
вернет массив строк, поэтому, если у вас есть только один URL в файле, вы можете использовать [0]
для пропуска первой строки, в противном случае передайте список и используйте foreach()
.Также стоит использовать trim()
, чтобы при настройке URL-адреса не было пробелов и т. Д.Я также изменил тест, чтобы проверить, находится ли код состояния в наборе возможных допустимых состояний, а не проверять отдельные значения.
Код мульти-URL ...
function url_test( $url ) {
$timeout = 10;
$ch = curl_init();
foreach ( $url as $link ) {
curl_setopt ( $ch, CURLOPT_URL, trim($link) );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch, CURLOPT_TIMEOUT, $timeout );
$http_respond = curl_exec($ch);
$http_code = curl_getinfo( $ch, CURLINFO_HTTP_CODE );
if ( !in_array($http_code , ["200", "301", "302"] ) ) {
return false;
}
}
curl_close( $ch );
return true;
}
$links = file("test.txt");
if( !url_test( $links) ) {
echo " is down!";
}
else { echo " functions correctly."; }
1 URLпример ...
function url_test( $url ) {
$timeout = 10;
$ch = curl_init();
curl_setopt ( $ch, CURLOPT_URL, trim($url) );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch, CURLOPT_TIMEOUT, $timeout );
$http_respond = curl_exec($ch);
$http_code = curl_getinfo( $ch, CURLINFO_HTTP_CODE );
if ( !in_array($http_code , ["200", "301", "302"] ) ) {
return false;
}
curl_close( $ch );
return true;
}
$links = file("test.txt");
if( !url_test( $links[0]) ) {
echo " is down!";
}
else { echo " functions correctly."; }