Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Помогите с функцией sleep()
Форумы портала PHP.SU » PHP » Программирование на PHP » Помогите с функцией sleep()

Страниц (1): [1]
 

1. 4php - 02 Июня, 2010 - 17:32:24 - перейти к сообщению
Нужно выводить по 1й строке в секунду. Как это сделать?

Делал так:
PHP:
скопировать код в буфер обмена
  1. for($i = 5; $i >= 0; $i--)
  2. {
  3.         echo $i.'<br>';
  4.         sleep(1);
  5. }

В итоге через 5 секунд на экран вываливается "54321", а нужно с промежутком в 1 сек.
Думаю вопрос понятен
2. SAD - 02 Июня, 2010 - 18:09:07 - перейти к сообщению
sleep тут не катит. Тебе обязательно на php?
3. 4php - 02 Июня, 2010 - 18:27:03 - перейти к сообщению
Да, нужно на php. А если не sleep, то что?
Пробовал sleep + flush, получилось, но коряво, вываливает сразу первые 3 строки а потом остальные с задержкой в секунду
4. Мелкий - 02 Июня, 2010 - 18:38:08 - перейти к сообщению
4php пишет:
Да, нужно на php.

Тогда запрашивайте AJAX'ом каждую следующую строку с интервалом в секунду.

или давайте задачу полностью, почему так и почему клиентской работой должен заниматься серверный php?
5. Champion - 02 Июня, 2010 - 20:00:57 - перейти к сообщению
ob_start(), вывод, ob_flush(), ob_clean() sleep() - если в таком порядке?
6. Nestor - 02 Июня, 2010 - 23:45:34 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. for($i = 5; $i >= 0; $i--) {
  3.         echo $i.'<br>';
  4.         flush();
  5.         sleep(1);
  6. }

Вот так у меня работает.попробуйте.
7. JustUserR - 04 Июня, 2010 - 11:00:20 - перейти к сообщению
4php пишет:
Нужно выводить по 1й строке в секунду
Помимо проблемы с буферазацией вывода которая решается с помощью функцию типа ob_* есть еще один важный момент - в реальном PHP-скрипте генерация и вывод строк тоже занимает определенное время особенно если они составляются каким-то достаточно сложным алгоритмом - поэтому в таком случае лучше разбить ваш PHP-скрипт на два исполняемых потока один из которых будет генерировать строки и добавлять их в буфер - а второй поток будет его сбрасывать раз в нужный интервал времени
Кроме того если вам нужна большая точность вывода в 1 секунду то лучше реализовать это на клиентской стороне с помощью JS-скрипта - ведь задержку составляет не только генерация строк но и передача их по каналам сети интернета

 

Powered by ExBB FM 1.0 RC1