Скрипт, который проверяет битые URL-адреса. Проблема с номером порта json / переполнением стека

У меня есть 4 php-файла.

**check_media.php**

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Check Media</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<!-- jQuery library -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<!-- Latest compiled JavaScript -->
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>#</th>
<th>URL</th>
<th>Availability</th>
<th>Media File Type</th>
</tr>
</thead>
<tbody id="result_tbody">

</tbody>
</table>
<button class="btn btn-default" id="get_data">Get data</button>
</div>
<script>



$(function () {
$("#get_data").click(function () {
$.ajax({
type: 'POST',
url: 'ajax/get_urls.php',
dataType: 'json',
//  encode: true,
beforeSend: function () {

},
success: function (data) {
if (data.result_count > 0) {
// alert('1111');
$("#result_tbody").html(data.result);
var count = 0;
$.each(data.urls, function(index, item) {
count = index ;
if(count > 3500) return false;


$.ajax({
type: 'POST',
url: 'ajax/get_availability.php',
data:{url:data.urls[index]},
dataType: 'json',
//  encode: true,
beforeSend: function () {

},
success: function (datas) {
/*if (datas.availability > 0) {
// alert('1111');
$("#result_tbody").html(data.result);
} else {
alert('2222');
}*/
$("#available_url_"+index).html(datas.availability);
},
error: function (jqXHR, exception) {
var msg = '';
if (jqXHR.status === 0) {
msg = 'Not connect.\n Verify Network.';
} else if (jqXHR.status == 404) {
msg = 'Requested page not found. [404]';
} else if (jqXHR.status == 500) {
msg = 'Internal Server Error [500].';
} else if (exception === 'parsererror') {
msg = 'Requested JSON parse failed.';
} else if (exception === 'timeout') {
msg = 'Time out error.';
} else if (exception === 'abort') {
msg = 'Ajax request aborted.';
} else {
msg = 'Uncaught Error.\n' + jqXHR.responseText;
}
$("#available_url_"+index).html(msg);
}

});
});
alert(count);
/* $.ajax({
type: 'POST',
url: 'ajax/get_urls.php',
dataType: 'json',
//  encode: true,
beforeSend: function () {

},
success: function (data) {
if (data.result_count > 0) {
// alert('1111');
$("#result_tbody").html(data.result);
} else {
alert('2222');
}
},
error: function (jqXHR, exception) {
var msg = '';
if (jqXHR.status === 0) {
msg = 'Not connect.\n Verify Network.';
} else if (jqXHR.status == 404) {
msg = 'Requested page not found. [404]';
} else if (jqXHR.status == 500) {
msg = 'Internal Server Error [500].';
} else if (exception === 'parsererror') {
msg = 'Requested JSON parse failed.';
} else if (exception === 'timeout') {
msg = 'Time out error.';
} else if (exception === 'abort') {
msg = 'Ajax request aborted.';
} else {
msg = 'Uncaught Error.\n' + jqXHR.responseText;
}
$("#result_tbody").html('<tr><td colspan="4">'+msg+'</td></tr>');
}

});*/
} else {
alert('2222');
}
},
error: function (jqXHR, exception) {
var msg = '';
if (jqXHR.status === 0) {
msg = 'Not connect.\n Verify Network.';
} else if (jqXHR.status == 404) {
msg = 'Requested page not found. [404]';
} else if (jqXHR.status == 500) {
msg = 'Internal Server Error [500].';
} else if (exception === 'parsererror') {
msg = 'Requested JSON parse failed.';
} else if (exception === 'timeout') {
msg = 'Time out error.';
} else if (exception === 'abort') {
msg = 'Ajax request aborted.';
} else {
msg = 'Uncaught Error.\n' + jqXHR.responseText;
}
$("#result_tbody").html('<tr><td colspan="4">'+msg+'</td></tr>');
}

});
});
});
</script>
</body>
</html>

get_availability.php

<?php
$result = array(
'availability' => '<button class="btn btn-danger">Not Available</button>'
);

$curl = @curl_init();
// $curl = curl_init();
$header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,";
$header[0] .= "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
$header[] = "Cache-Control: max-age=0";
$header[] = "Connection: keep-alive";
$header[] = "Keep-Alive: 300";
$header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
$header[] = "Accept-Language: en-us,en;q=0.5";
$header[] = "";

curl_setopt($curl, CURLOPT_URL, trim($_POST['url']));
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3');
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_ENCODING, '');
curl_setopt($curl, CURLOPT_AUTOREFERER, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

// $cookiefile = "cookiefile";
// curl_setopt($curl, CURLOPT_COOKIEFILE, $cookiefile);
// curl_setopt($curl, CURLOPT_COOKIEJAR, $cookiefile);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, True);
curl_setopt($curl, CURLOPT_NOBODY, False);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, True);
curl_setopt($curl, CURLOPT_BINARYTRANSFER, True);
$response = curl_exec($curl);
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if($httpCode >= 200 && $httpCode <= 400) {
// echo  'true';
$result['availability'] =  '<button class="btn btn-info">Available</button>' ;
} else {
// echo  'false';
}

echo json_encode($result);

get_urls.php

<?php

$result = array(
'result_count' => 0 ,
'result' => null,
'urls'=>array()
);
$json_file = file_get_contents('http://blogglista.no/CHECK_NO_RADIO_STREAMS/ajax/NO.php');
if($json_file){
$json_decoded = json_decode($json_file);
if($json_decoded){
foreach($json_decoded as $data){
$result['urls'][] = $data->url  ;
$result['result'] .= "<tr><td>".$result['result_count']."</td><td><a href='".$data->url."'>".$data->url."</a></td><td id='available_url_".($result['result_count'])."'></td><td></td></tr>";
$result['result_count']++ ;
}
}
}

echo json_encode($result);

и, наконец, php-файл с URL-адресами:

NO.php

[
{"id":5314,
"name":"Linc's FM",
"url":"http://lincs.planetwideradio.com:8000/lincsfmaac",
"country_id":51
},
{"id":5310,
"name":"Heart extra xmas",
"url":"http://media-ice.musicradio.com/HeartextraMP3",
"country_id":51
},
{"id":5308,
"name":"Forth 2",
"url":"https://stream-al.planetradio.co.uk/forth2.aac",
"country_id":51
},
{"id":5309,
"name":"Radio City Talk",
"url":"https://stream-al.planetradio.co.uk/citytalk.aac",
"country_id":51
},
{"id":5311,
"name":"Smooth Christmas Radio",
"url":"http://198.101.15.90:8178/stream",
"country_id":51
},
{"id":5307,
"name":"Forth 1",
"url":"https://stream-al.planetradio.co.uk/forth1.aac",
"country_id":51
},
{"id":4660,"name":"BBC Radio 1",
"url":"http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio1_mf_p",
"country_id":51
},
{"id":4661,"name":"BBC Radio 2",
"url":"http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio2_mf_p",
"country_id":51},
{"id":4662,"name":"BBC Radio 3",
"url":"http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio3_mf_p",
"country_id":51},
{"id":4663,"name":"BBC Radio 4",
"url":"http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio4fm_mf_p",
"country_id":51},
{"id":4664,"name":"BBC Radio 4 LW",
"url":"http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio4lw_mf_p",
"country_id":51},
{"id":4665,"name":"BBC Radio 4 Extra",
"url":"http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio4extra_mf_p",
"country_id":51},
{"id":4666,"name":"BBC 5 Live",
"url":"http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio5live_mf_p",
"country_id":51},
{"id":4667,"name":"Free Radio Coventry & Warwickshire",
"url":"https://stream-al.planetradio.co.uk/freecoventry.aac",
"country_id":51},
{"id":4668,"name":"BBC 6 Music",
"url":"http://bbcmedia.ic.llnwd.net/stream/bbcmedia_6music_mf_p",
"country_id":51},
{"id":4669,"name":"BBC 1Xtra",
"url":"http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio1xtra_mf_p",
"country_id":51}]

Что происходит, так это то, что мой скрипт прекрасно работает со ссылками, которые не имеют номеров портов. Но почти все URL с номерами портов сообщают об ошибке. Пока URL работает правильно. Результаты здесь:

Спасибо!

ПРОВЕРЬТЕ ЭТО ИЗОБРАЖЕНИЕ. ЭТО показывает, что я имею в виду

введите описание изображения здесь

Я зарегистрировал несколько URL-адресов с номерами портов, отображаемыми как Доступные, но я думаю, что это был номер порта 80 — это tcp или udp. Тем не мение. Кто-то знает, что вызывает это? Я что-то забыл в своих сценариях?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]