Как повторить переменную, затем удалить все на странице и повторить

Я пытался эхо-переменные во время работы скрипта. У меня есть эта часть для работы. Однако я хочу удалить все на странице, а затем повторить и повторить. Я искал в stackoverflow и пробовал их решения, но у меня это все еще не работает. Пример:

  1. Удалите все на странице (чтобы она была пустой).
  2. эхо $i
  3. $i += 1
  4. Повторить

Версия PHP: 7.2.10 Работает на: XAMPP

скрипт.php:

<?php

$i = 0;
while ($i < 999999999) {
    echo $i;
    flush();
    ob_flush();
    sleep(1);
    $i += 1;
}

Что происходит, так это то, что страница не удаляет все на странице, поэтому в итоге она выглядит так:

09:00:00

0

09:00:01

01

09:00:02

012

Я хочу, чтобы это было так:

09:00:00

0

09:00:01

1

09:00:02

2

Росс - сбрасывание данных делает именно это - ничто в сценарии не очищает дисплей. Для этого вы можете захотеть изучить что-то вроде Javascript с ajax, чтобы вы могли общаться с вашим бэкэндом PHP.

Derek Pollard 28.03.2019 23:01

@DerekPollard Есть ли какая-нибудь функция в php, которая могла бы это сделать?

Ross 28.03.2019 23:03

Нет, это было бы чем-то для обработки javascript. Если у вас не было PHP, просто обновляющего страницу каждые X секунд, что я не рекомендую.

Derek Pollard 28.03.2019 23:04

@DerekPollard извините, этот вопрос немного не по теме, но вы меня очень обеспокоили. Javascript выполняется на стороне клиента. Это означает, что с помощью Javascript я могу вызывать функции PHP. Означает ли это, что люди могут редактировать исходный код (используя Google Chrome, нажав F12, а затем редактируя код в разделе элементов) и выполнять любые мои функции php, если они узнают имя моей функции php?

Ross 28.03.2019 23:08

php работает на стороне сервера. Это означает, что клиент получает только то, что вы ему отправляете. обычный текст, файлы html, json или что угодно. Это означает, что когда контент отправляется один раз клиенту, сервер не может очистить отображение/страницу на стороне клиента. Если вы хотите изменить содержимое страницы, используйте вызовы ajax из js на ваш веб-сервер для получения нужного содержимого.

Marc 28.03.2019 23:33

Любой клиент может выполнять любую функцию на стороне сервера что вы опубликовали, поэтому она явно доступна в качестве конечной точки. Он может нет как-то выполнять произвольные функции. Как это сделать? Он может отправлять только http-запросы, другого волшебного соединения между клиентом и сервером нет.

arkascha 28.03.2019 23:37

@ Марк говорит, что у меня есть функция с именем secret, и она возвращает apples. Если клиент выясняет, что моя функция называется secret, может ли он сделать запрос ajex для вызова функции secret и увидеть, что ответ apples?

Ross 28.03.2019 23:48

@arkascha Если я скажу пользователю, что моя функция называется secret, они могут сделать почтовый запрос к секретной функции и узнать мои secret результаты apples?

Ross 28.03.2019 23:49

@ross, это зависит от того, как вы создаете свою структуру API! то, что у вас есть функция php, не означает, что пользователь может вызывать ее через ajax.

Marc 28.03.2019 23:59

Нет, скажите мне: как вы должны запросить функция, сделав http-запрос? Вы можете запросить URL только со стороны клиента. Если сервер отвечает на этот URL-адрес и как, зависит от сервера. Итак, ты решает, что делает ваш сервер, как он реагирует. Если вы сопоставите URL-адрес с функцией, то, конечно, эта функция будет выполнена.

arkascha 29.03.2019 00:00
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
10
111
2

Ответы 2

Попробуйте это, используя JS для очистки страницы во время цикла while

$i = 0;
        while ($i < 10) {
            echo $i;
            flush();
            ob_flush();
            sleep(1);
            $i += 1;
            echo "<script type='text/javascript'>";
            echo "document.body.innerHTML = ''";
            echo "</script>";
        }

разве это не будет много печатать часть js, и html-код будет заполнен этим кодом? Следовательно, занимает много оперативной памяти?

Ross 28.03.2019 23:54

@Росс Много оперативной памяти? Не на стороне сервера, совсем нет, а на стороне клиента, ну, современные компьютеры имеют много гигабайт оперативной памяти. Приведенный выше код будет составлять примерно 1 килобайт...

arkascha 29.03.2019 00:03

@Ross Я не знаю об этом ngl, но не думаю, что это займет слишком много времени, так как это очень простой код. То, о чем вы просите, странно, и я не вижу много других способов сделать это.

Ralph 29.03.2019 00:05

Я думаю, вы беспокоитесь о неправильных вещах, @Ross - в наши дни веб-сайты загружают больше javascript, чем когда-либо прежде.

Derek Pollard 29.03.2019 00:09

Этот код покажет вам белый экран — php является серверным языком и показывает только результат.

Maksim 29.03.2019 00:36

@Максим ты тестировал код? Прекрасно работает на моем конце.

Ralph 29.03.2019 00:40

Да, тестировал - и увидел белый экран :)

Maksim 29.03.2019 11:39

если я не ошибаюсь, единственный способ добиться этого - javascript или CSS, потому что «вывод» в PHP всегда отображается на стороне клиента, а, как вы хорошо знаете, PHP ничего не меняет на стороне клиента.

<?php                                      
$i = 0;
   while ($i < 999999999) {
 echo '<div style = "position:absolute;margin-left:0;margin-top:0;background:white;width:15px;">&nbsp;</div>'; // to clean
 echo '<div style = "position:absolute;margin-left:0;margin-top:0">'.$i.'</div>'; // to show in same place.
flush(); 
ob_flush(); 
sleep(1);
$i += 1;
}
?>

В любом случае, надеюсь, что эта помощь для вас.

Если я это сделаю, это довольно быстро сожрет оперативную память клиента.

Ross 28.03.2019 23:53

этот вопрос выглядит как "домашнее задание", но это не моя забота. Куда угодно.. Я думаю, что это не достигается только с PHP, потому что вы знаете, только контролировать серверную часть, а не место вывода (клиентская сторона).

Sebastian P. 29.03.2019 00:14

Другие вопросы по теме