У меня есть таблица Matrix, сгенерированная на PHP. И я хочу показать «чек» или «крест» на основе результата DNS-вызова. Эта таблица Matrix может содержать более 200 000 ячеек.
Я пытался поместить весь код PHP на одну и ту же страницу, но время ожидания PHP истекло, если нужно выполнить много вызовов DNS. Я перешел на Аякс. Добавил DIV внутри каждой ячейки и поместил код ajax, вызывающий второй PHP, который будет выполнять DNS-запрос. Это хорошо работает, но после 5000-6000 запросов некоторые ячейки не заполняются. Я думаю, потому что скрипт пытается делать вызовы для всех ячеек одновременно.
Это способ заставить ajax делать вызовы для каждой ячейки по одному?
У меня есть этоКод PHP:
$body .= '
<script type="text/javascript">
';
foreach (getEachIpInRange($cidr) as $IP) {
foreach ($rbls as $rbl) {
$divid++;
$body .= ' function updatediv' . $divid . '() {
$.ajax({
type: \'get\',
url: \'verify.php?ip=' . $IP . '&dns=' . $rbl . '\',
data: $(self).serialize(),
success: function(data) {
$("#div' . $divid . '").html(data).text();
}
})
}
';
}
}
$body .= ' </script>
';
, который генерирует следующий код:
<script type="text/javascript">
function updatediv1() {
$.ajax({
type: 'get',
url: 'verify.php?ip=123.123.123.123&dns=host.domain1.tld',
data: $(self).serialize(),
success: function(data) {
$("#div1").html(data).text();
}
})
}
function updatediv2() {
$.ajax({
type: 'get',
url: 'verify.php?ip=234.234.234.234&dns=host.domain2.tld',
data: $(self).serialize(),
success: function(data) {
$("#div2").html(data).text();
}
})
}
function updatediv3() {
$.ajax({
type: 'get',
url: 'verify.php?ip=345.345.345.345&dns=host.domain3.tld',
data: $(self).serialize(),
success: function(data) {
$("#div3").html(data).text();
}
})
}
function updatediv4() {
$.ajax({
type: 'get',
url: 'verify.php?ip=456.456.456.456&dns=host.domain4.tld',
data: $(self).serialize(),
success: function(data) {
$("#div4").html(data).text();
}
})
}
Лучше всего будет одна функция, которая будет обновлять каждую ячейку одну за другой. Но если это невозможно, как я могу выполнить цикл между всеми функциями и запустить их, давая интервал между каждой из них, равный 25 или 30 мс, чтобы не получить тайм-аут?