Использование PHP для отображения зацикленных данных на веб-странице - PullRequest
0 голосов
/ 27 июля 2011

lib.php:

<?php

function get_time() {
    loop = true;
    while (loop) {
        echo date("F j, Y, g:i a");
    }
}

?>

index.php содержит это:

<?php
    include("lib.php");
?>

и это где-то еще внизу:

<?php
    get_time();
?>

Однако я ничего не вижу.

Итак, я вижу здесь две потенциальные проблемы. Либо мне нужно объявить include() одновременно с объявлением функции. Или PHP не может отображать непрерывные данные (как в случае цикла while) на веб-странице без обновления.

Если это первое, есть ли способ объявить include() глобально для всей моей страницы? Если это последнее, как я могу заставить его отображать содержимое непрерывного цикла на моей странице? Должен ли я использовать другой язык? Спасибо

Ответы [ 3 ]

4 голосов
/ 27 июля 2011

Этот фрагмент кода будет зацикливаться бесконечно:

function get_time() {
    loop = true;
    while (loop) {
        echo date("F j, Y, g:i a");
    }
}

get_time();

Так что тот факт, что вы ничего не видите, возможно, из-за этого.

Кроме того, вы правы - чтобы видеть постоянно обновляемые данные, подобные этим, вам нужно либо обновить страницу, либо обновить содержимое с помощью вызовов AJAX.

2 голосов
/ 27 июля 2011

Если вы используете этот код, убедитесь, что у ваших переменных есть знаки доллара.

$loop = true;
while ($loop) {
...
}
2 голосов
/ 27 июля 2011

В большинстве случаев PHP не может отправлять данные в ваш браузер несколько раз, потому что (непрерывно):

  • Кроме Firefox, ни один браузер не может отображать неполные данные.
  • Ваш веб-сервер, вероятно, буферизует данные, которые выводит ваш FastCGI / CGI / PHP-модуль.
  • Вы не используете ob_implicit_flush(1) в начале вашей get_time() -функции, и у вас нет flush(); после каждого echo (поэтому вы можете попробовать добавить эту строку в конце вашей while -тело).
...