В настоящее время у меня есть несколько div, которые извлекают отдельные страницы и обновляют содержимое каждые x секунд. Они должны показывать обновления в реальном времени из футбольных матчей и в настоящее время обновлять каждые 90 секунд, когда игры воспроизводятся, и 90000 секунд, когда игры не воспроизводятся (чтобы эффективно отключить обновление).Обновить div только при изменении внешнего контента
Вопросы, я в настоящее время являюсь ...
- Перед игры начинаются, я должен пройти через страницу и изменить яваскрипт таймера вручную и повторно загружать файлы, делать то же самое, как только игры закончены ,
- Даже в течение 90 секунд, когда около 100 человек часто просматривают сайт, сервер занимает немного стука и может либо замедлить, либо просто дать 500 внутренних ошибок сервера.
- Если я забыл выключить (или не могу, потому что у меня нет сигнала на моем телефоне) после игр, когда трафик увеличивается по мере того, как люди начинают возвращаться домой, на самом деле сайт занимает несколько часов - и это вызвало наш сайт чтобы заблокировать его на несколько недель.
Пример кода в вопросе
<script>
$(document).ready(function() {
$("#mdetails").load("/content/phppages/matchdetailsbase.php");
var refreshId = setInterval(function() {
$("#mdetails").load('/content/phppages/matchdetailsbase.php?randval='+ Math.random());
}, 90000);
$.ajaxSetup({ cache: false });
});
</script>
Это один от http://www.margate-fc.com/content/1st_team/fixtures_results/match_detailsnew.php?all_games_id=4733 и обновляет всю основную область содержимого (в разделе «о матче»). В блоке «Матчи» в верхней части левого столбца есть аналогичный блок.
match_detailsnew.php содержит 5 различных запросов, поэтому предложения, которые я прочитал, чтобы проверить изменения базы данных, будут трудно реализовать здесь.
По общему признанию, этот код был скопирован/вставлен откуда-то, поскольку я ничего не знал о JQuery, и хотя я сейчас очень немного все еще на моей кривой обучения. Настройка всего сайта ужасна, но это была моя первая попытка на динамическом сайте около 4 лет назад, и я сейчас перестраиваю его с нуля. С этим я получу себя знакомым с опросом базы данных для изменений и обновления на основе этого. Тем не менее, это далеко, и мы отчаянно нуждаемся в решении сейчас!
Что я хотел бы, это для jQuery, чтобы проверить, изменился ли результат matchdetailsbase.php вообще (учитывая, что это будет изменение в любом месте страницы, сгенерированное любым из 5 запросов), и если оно есть, обновите div, считая, что это не приведет к тому, что на сервере будут помещаться одни и те же штампы/страницы, чем это делает постоянное обновление.
Если возникнут проблемы, связанные с моей настройкой, альтернативой будет создание переменной для времени обновления, которую я могу изменить в одном месте и будет распознан всеми div. Я попробовал это, установив $ RefreshTime = 900 в моем файле конфигурации, а затем изменить сценарий
$("#mdetails").load('/content/phppages/matchdetailsbase.php?randval='+ Math.random());
}, <?php echo $refreshtime; ?>);
Это не похоже, не делают разницы, что я положил в $ RefreshTime, но даже если это так, я понял, что, поскольку $ refreshtime находится за пределами обновляющегося div, оно не будет подбирать никаких изменений для него, поэтому когда бы он ни был установлен, когда первая загрузка страницы всегда будет оставаться до тех пор, пока полная страница не будет обновлена вручную, даже если бы я изменил ее в config .php.
Как уже упоминалось ранее, это действительно краткосрочное решение, так как сайт перестраивается, поэтому я действительно не против падения и грязного взлома в случае необходимости!
Заранее спасибо
Стив
Этот бит кода находится вне меня, но принимая удар на него,«не-здесь .php ", будет ли моя страница, которая называется? Предположительно, я мог бы как-то использовать «If (status ==», чтобы сравнить текущую версию этой страницы с последней загруженной версией и, если она отличается, поставить бит обновления кода между самыми внутренними фигурными фигурными скобками? Два вопроса, использовать для проверки текущей версии в отношении последней загруженной версии matchdetailsbase.php и где я бы установил интервал, чтобы проверить это? BTW, ссылка была чем-то, что я уже видел, но используя вызовы в базу данных для проверки обновлений. –
Я отредактировал, посмотрим, поможет ли это. – rcsole
Я определенно думаю, что понимаю логику. Он загружает контент изначально, проверяет каждые 90 секунд, чтобы увидеть, изменилось ли содержимое в matchdetailsbase.php через '(textStatus == "notmodified")'. Если это правда, он ничего не делает, кроме как false, обновится? У меня нет времени, чтобы реализовать это еще (так как я на самом деле ушел, чтобы посмотреть игру), но сегодня вечером он уйдет. Единственный бит, который меня смущает, это бит textStatus == «notmodified». Не изменен термин, признанный jQuery, или это просто код psuedo, и мне придется реализовать там свои собственные критерии? Спасибо за помощь. –