Как я могу запустить скрипт PHP с таймером?
У меня есть функции foreach, которые печатают имена студентов
$names = array("Alex","Brad","Tom");
foreach($names as $name) {
echo "$name <br />";
sleep(3);
}
Как я могу напечатать каждое имя каждые 3 секунды? После "echo $name"
Мне нужен таймер, чтобы остановить цикл и подождать 3 секунды.sleep()
функции здесь не работают. Что еще я могу сделать?
5 ответов
Вы не можете сделать это на стороне сервера (надежно). Это связано с тем, что слишком большая вероятность того, что ваш трафик будет удерживаться или буферизоваться в пути: веб-сервером, прокси-серверами в пути, вашим браузером и т. Д. Однако это, вероятно, будет работать на CLI.
Так что я бы определенно сделал это на стороне клиента, не жертвуя безопасностью (при необходимости).
Если это только для "косметических" целей, вы можете создать метод AJAX, который будет возвращать массив имен, а затем Javascript выводит их со своими таймерами.
Или вы можете заставить AJAX вызывать PHP-скрипт с использованием таймеров, и PHP вернет только одно имя. Он может сохранить текущую метку времени в БД или в переменной Session и не возвращать новое имя, пока не пройдет некоторое время.
Попробуйте использовать функцию сброса
ob_start();
$names = array("Alex","Brad","Tom");
foreach($names as $name) {
echo "$name <br />";
ob_flush();
flush();
sleep(10);
}
Вы можете сделать это с помощью JavaScript, AJAX
или с функцией flush()
<?php
$names = array("Alex","Brad","Tom");
foreach($names as $name) {
echo "$name <br />";
flush();
sleep(3);
}
Если вам нужно сделать это на веб-странице, вам нужно очистить вывод или отключить буферизацию вывода, чтобы получить эту работу. Некоторые ссылки:
В php CLI этот код будет работать.