Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 13.01.2013
Сообщений: 11

Выполнение php файла с временным интервалом

13.01.2013, 02:13. Показов 3072. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Друзья, имеется интернет-радио собственного производства. Встал вопрос о том, чтобы во время проигрывания песен, выводилось их название. Основная часть проблемы решена, есть php файл который берет данные с сервера и выводит их на сайт. Дальше нужно, чтобы названия песен менялись без обновления страницы, пришлось срочно вникать в AJAX и JQUERY, хотя знания нулевые.

Получился код:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script src="script/jquery-1.8.3.min.js" type="text/javascript"></script>
<script type="text/javascript">
setInterval(function() {
 
$(document).ready(function(){ 
    $.ajax({ type: 'POST', url: "includes/title_song.php", context: ("#title"), success: function(){
    $("#title").load('includes/title_song.php');
}
});
});
 
}, 5000);
</script>
 
<p id="title"><b>В Эфире:</b></p>
Проблема в том, что считывается каждые 5 секунд переменная с названием, но она не изменяется, так как запуск php файла не происходит. Что подправить, чтобы каждые 5 секунд проходило выполнение php файла?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.01.2013, 02:13
Ответы с готовыми решениями:

Цикл For с временным интервалом
Доброго времени суток! У меня стоит задача чтобы при нажатии на кнопку, начали меняться изображения, с временным интервалом 1 минута. ...

Выполнение задачи с интервалом 1 с
Пишу программу под Андроид. Одна из функций программы, запуск определенного кода каждую секунду вне зависимости от того спит система или...

Выполнение функции с интервалом
Здравствуйте. У меня есть проблема. Я установил событие при нажатии на кнопку, и при нажатии на эту кнопку функция выполняется с...

17
55 / 55 / 8
Регистрация: 29.08.2012
Сообщений: 175
13.01.2013, 03:19
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script src="script/jquery-1.8.3.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
setInterval(function() {
  $.ajax({
    type: 'POST',
    url: "includes/title_song.php",
    context: $("#title"),
    success: function(){
     $(this).load('includes/title_song.php');
    }
  });
 }, 5000);
});
</script>
 
<p id="title"><b>В Эфире:</b></p>
0
0 / 0 / 0
Регистрация: 13.01.2013
Сообщений: 11
13.01.2013, 10:03  [ТС]
Смысл не меняется. пока я не выполню sitename.ru/includes/title_song.php руками название не меняется.

Если вставить просто php код на страницу, то при каждой перезагрузке он пишет название песни которая играет. Сейчас же даже перезагрузив страницу ничего не меняется до выполнения php руками.
0
55 / 55 / 8
Регистрация: 29.08.2012
Сообщений: 175
13.01.2013, 11:32
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<script src="script/jquery-1.8.3.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
setInterval(function() {
  $.ajax({
    type: 'POST',
    url: "includes/title_song.php",
    cache: false,
    dataType:"text", 
    context: $("#title"),
    success: function(data){
     $(this).text(data);
    }
  });
 }, 5000);
});
</script>
 
<p id="title"><b>В Эфире:</b></p>
в php отсылаете текст, который попадает в параметр data функции. И еще лучше будет настроить обмен заголовками так, чтобы сервер отправлял Last-modified, а на клиенте стоял флаг ifModified.
0
0 / 0 / 0
Регистрация: 13.01.2013
Сообщений: 11
13.01.2013, 11:50  [ТС]
Мне конечно стыдно за свою тупость, вставил ваш код, но без обновления страницы не работает. Обновил, выводит имя проигрываемой песни, как она закончилась имя не меняется на следующую.
0
55 / 55 / 8
Регистрация: 29.08.2012
Сообщений: 175
13.01.2013, 11:54
Проверьте, происходит ли обмен данными между сервером и клиентом каждые 5 секунд. Если да, то вставьте сюда php код.
0
0 / 0 / 0
Регистрация: 13.01.2013
Сообщений: 11
13.01.2013, 11:59  [ТС]
Хотя знаете... Сейчас название сменилось, но не через 5-10 секунд после начала песни, а минуты через 2

Добавлено через 1 минуту
Цитата Сообщение от FlyMouse86 Посмотреть сообщение
Проверьте, происходит ли обмен данными между сервером и клиентом каждые 5 секунд. Если да, то вставьте сюда php код.
Я думаю происходит, потому что при загрузке страницы выводится надпись "В эфире", а через пять секунд появляется "В эфире название песни"

Добавлено через 3 минуты
PHP - код запроса названия на сервере. Переменных он берет много, но использую пока только название.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php
$ip = "151.248.112.125";
$port = "8000";
$ice2_station = "Радио KTKP";
 
$fp = fsockopen("$ip", $port, &$errno, &$errstr, 30);
if(!$fp) {
        $success=2; 
 
 
 
 
echo'<table>
     <tr>
        <td width="100%" colspan="2">
        <img border="0" src="images/offline.gif" width="22" height="22">
        <b><font face="Georgia" size="5" color="#FF0000">'.$ice2_station.' сейчас не работает</font></b></td>
      </tr>
</table>';
}
 
if($success!=2){
 fputs($fp,"GET /status2.xsl HTTP/1.0\r\nUser-Agent: Icecast2 XSL Parser (Mozilla Compatible)\r\n\r\n"); //get status2.xsl
 while(!feof($fp)) {
  $page .= fgets($fp, 1000);
 }
 fclose($fp);
 $page = ereg_replace(".*<pre>", "", $page);
 $page = ereg_replace("</pre>.*", ",", $page);
 
 
 
 $numbers = explode(",",$page);
 $mount = $numbers[0];
 $connections = $numbers[1];
 $stream_n = $numbers[2];
 $listeners = $numbers[3];
 $desc = $numbers[4];
 $cur_song = $numbers[5];
 $str_url = $numbers[6];
 $client_info = $numbers[7];
 $test1 = $numbers[8];
 $mount = $numbers[11];
 $connections = $numbers[12];
 $station =$numbers[13];
 $listeners = $numbers[14];
 $description = $numbers[15];
 $cur_song = $numbers[16];
 $www_url  = $numbers[17];
if (strlen($mount)<2) echo '<table width="100%" style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="0">
<tr>
 <td width="100%"><b><font face="Arial" size="2">
        <tr>
        <td width="100%"><b><font face="Georgia" color="green" size="5">
        <img border="0" src="images/ice2_status/tunes.gif" width="22" height="18">
        '.$ice2_station.' Не Работает! </font></b></td>
      </tr>
      </tr>
         </table>';
    
    else echo 'В эфире:'.$cur_song.'';
    }
 
?>
0
55 / 55 / 8
Регистрация: 29.08.2012
Сообщений: 175
13.01.2013, 12:02
То, что выводится при загрузке страницы не имеет значения. Важно то, меняется ли Ваша страница динамически.
Вместо
JavaScript
1
$(this).text(data);
используйте
JavaScript
1
$(this).html("<b>В эфире: "+data+"</b>");
0
13.01.2013, 12:09

Не по теме:

Я настоятельно не рекомендую использовать AJAX внутри setInterval, т. к. setInterval не будет дожидаться окончания передачи, а будет запускать этот AJAX запрос каждые 5 секунд, что нарушит временной интервал.

JavaScript
1
2
3
4
5
6
7
8
9
(function () {
    var args = arguments;
    $.get('/includes/title_song.php', function (data) {
        alert(data);
        setTimeout(function () {
            args.callee();
        }, 5000);
    })
})();

1
55 / 55 / 8
Регистрация: 29.08.2012
Сообщений: 175
13.01.2013, 12:13
Согласен. Лучше использовать timeout в калбэк функции

Добавлено через 1 минуту
Из сервера приходят ответы? Просмотрите заголовки и данные, что там приходит.
0
0 / 0 / 0
Регистрация: 13.01.2013
Сообщений: 11
13.01.2013, 12:19  [ТС]
Теперь вообще перестал обновлять данные без перезагрузки страницы(( А вы не могли бы мне помочь в реальном времени? скайп, ася... Скажите свою цену, если вы хотите. Уж очень хочется все довести до ума.

Добавлено через 4 минуты
Ответ приходит. Окно с названием трека выскакиевает, но... не с тем который играл сейчас, а с тем который играл до этого.
0
55 / 55 / 8
Регистрация: 29.08.2012
Сообщений: 175
13.01.2013, 12:25
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<script src="script/jquery-1.8.3.min.js" type="text/javascript"></script>
<script type="text/javascript">
function getData() {
  $.ajax({
    type: 'POST',
    url: "includes/title_song.php",
    cache: false,
    dataType:"text", 
    context: $("#title"),
    success: function(data){
     $(this).text(data);
     setTimeout(getData(),5000)
    }
  });
 };
$(document).ready(function(){
getData();
});
</script>
 
<p id="title"><b>В Эфире:</b></p>
Добавлено через 5 минут
Попробуйте вставить данный заголовок в php.
PHP
1
header("Cache-Control: no-store, no-cache");
или
PHP
1
header("Cache-Control: no-store, no-cache, must-revalidate");
1
0 / 0 / 0
Регистрация: 13.01.2013
Сообщений: 11
13.01.2013, 12:40  [ТС]
Друзья! Вы лучшие. Не знаю как вас благодарить. Все работает.
0
0 / 0 / 0
Регистрация: 13.01.2013
Сообщений: 11
18.01.2013, 22:41  [ТС]
Прошло некоторое время и я заметил закономерность. Данный скрипт работает отлично, за исключением одного момента... На главной и страницах второго уровня - да, все хорошо. На страницах третьего уровня не работает.
0
18 / 18 / 0
Регистрация: 16.06.2012
Сообщений: 78
19.01.2013, 08:01
Так вы попробуйте запустить скрипт с относительным путем
JavaScript
1
url: "/includes/title_song.php"
1
0 / 0 / 0
Регистрация: 13.01.2013
Сообщений: 11
19.01.2013, 09:06  [ТС]
Эм... Я немного далек от этого, но там и так же прописан путь до php-файла.
0
18 / 18 / 0
Регистрация: 16.06.2012
Сообщений: 78
19.01.2013, 09:09
в моем варианте в самом начале параметра url, есть слэш, попробуйте с ним
0
0 / 0 / 0
Регистрация: 13.01.2013
Сообщений: 11
19.01.2013, 09:15  [ТС]
Спасибо, помогло!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.01.2013, 09:15
Помогаю со студенческими работами здесь

Выполнение процедур по очереди с интервалом в 10 сек
Привет! Подскажите пожалуйста, как замутить таймер. У меня есть 7 процедур, все они запитаны на нажатие кнопки. Хотелось бы чтобы все...

Выполнение стороннего скрипта с определенным интервалом
Доброго времени суток, форумчане. Возникла потребность в скрипте, выполняемом через определенный промежуток времени, пока пользователь...

Как организовать выполнение функций с постоянным интервалом
Собственно я уже все спросил. У меня есть функция, которая меняет одну картинку на другую через соответствующий интервал времени... Она...

Как сделать выполнение php файла по времени
Всем привет, есть файл update.php и нужно сделать чтобы он выполнялся 1 раз в 10 часов. Cron не подходит, как еще можно это сделать?

Выполнение php скриптов (нужно на сервере поменять дату создания файла)
всем привет такая ситуация нужно на сервере поменять дату создания файла. в C# я так понял нет тако возможности. нотогда вопрос такой. как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru