php пауза выполнения скрипта
Php пауза выполнения скрипта
Задержки php
Всем привет! Сегодня мы с вами рассмотрим реализацию задержек на php. Итак, поехали!
Для того чтобы выполнить простую задержку необходимо воспользоваться функцией sleep().
В качестве аргумента данная функция принимает в себя количество секунд в течении которых будет длиться задержка. То есть после вызова данной функции должно пройти 3 секунды и только после этого начнет выполняться последующая часть кода.
У функции sleep() есть аналог, а именно функция usleep().
Отличие заключается в том что данная функция принимает значение аргумента в микросекундах.(3000000 мкс = 3 с)
Если мы хотим указать задержку на нечетное количество времени можно воспользоваться функцией nanosleep().
Первым аргументом данная функция принимает количество секунд, а вторым количество микросекунд. В нашем примере мы выполнили задержку в 1.5 секунды.
Можно также выполнять задержки относительно текущего времени.
Делается это через функцию time_sleep_until(). В ней мы указываем количество секунд прошедших с эпохи UNIX, то есть с 1979 года. Сделать это можно через функцию time(). Получив текущее количество секунд прошедших с 1979 Года нам достаточно приплюсовать количество секунд задержки.
Напоследок мы с вами рассмотрим функцию с помощью которой можно ограничить время выполнения скрипта.
Здесь мы сделали задержку в 3 секунды. Однако в самом начале была вызвана функция set_time_limit() с аргументом 2 секунды. Именно с помощью данной функции мы можем ограничивать время выполнения скрипта на заданное время. Так как время выполнения скрипта вместе с задержкой у нас 3 секунды, а ограничение выполнения стоит на 2 секунды, произойдет ошибка.
Если изменить ограничение, к примеру на 4 секунды.
Здесь ошибки уже не будет.
С помощью функции set_time_limit() мы можем выставить неограниченное время выполнения скрипта.
Достаточно в данной функции указать значение 0. Однако перед этим необходимо в файле конфигурации php.ini отключить безопасный режим.
Вот так мы можем реализовывать временные задержки при выполнении php сценариев.
На этом данная статья подошла к концу. Не забывайте оставлять вопросы в комментариях или группе
А на этом у меня все. Желаю вам успехов и удачи! Пока.
Оцените статью:
Статьи
Комментарии
Внимание. Комментарий теперь перед публикацией проходит модерацию
Все комментарии отправлены на модерацию
Запись экрана
Данное расширение позволяет записывать экран и выводит видео в формате webm
usleep
(PHP 4, PHP 5, PHP 7, PHP 8)
usleep — Задержка выполнения в микросекундах
Описание
Откладывает выполнение программы на указанное число микросекунд.
Список параметров
Замечание: В Windows система может откладывать исполнение дольше указанного количества микросекунд, в зависимости от аппаратного обеспечения.
Возвращаемые значения
Функция не возвращает значения после выполнения.
Примеры
Пример #1 Пример использования usleep()
// ждать 2 секунды
usleep ( 2000000 );
Результат выполнения данного примера:
Смотрите также
User Contributed Notes 12 notes
On both MacOS X and Linux the usleep() call seems to consume CPU cycles, whereas sleep() and time_nanosleep() do not. This was the same on PHP 5.3.29 and 5.5.29.
I used a loop with just a call to sleep/usleep/time_nanosleep, and compared them all with an empty loop. Obviously the empty loop consumed 99% of the CPU, sleep used 0%, usleep used 3% for 1000ms and 6% for 100ms, and time_nanosleep used 0% for both 500ms and 1000ms.
If you’re using Windows then you maybe are in trouble with usleep if you really need to use it.
The Bernie’s microdelay function using fsockopen does not work properly, and the fclose doesn’t help much.
Though another solution should be found, and googling a bit I fount a WinAPI function: Sleep.
So I get with this snippet wich works fine for me, you get milliseconds precission but the more important, it works for long-run scripts and of course, it does not waste any CPU cycles.
// USleep alternative for Windows and PHP4:
$GLOBALS[‘win32api’]->registerfunction(«long Sleep (long dwMillisecods) From kernel32.dll»);
I have spent DAYS trying to create a reliable usleep()-replacement for Windows.
I have only this to offer:
If you need this function, upgrade your project to PHP 5.
Or settle for 1-second delays with the sleep()-function.
These, unfortunately, seem to be your only options.
Note that this function has an overhead!
This block is running about 70 seconds on my server.
Script take about 70 microseconds for every usleep() function call.
I have noticed that this consumes a lot of system CPU (at least in my limited testing) possibly from all of the system calls or the huge mathematical functions I used to test the effectiveness of the script.
Dude you are SO the man for that code snippet. It worked like a charm. I just wanted to point out a couple things and offer my own improvement.
1. If you’re like me, you were probably wondering why the socket had to keep being recreated on each call, and why you couldn’t just create a static socket. Its because socket_select assumes you’re passing in a pointer, and will alter the variable on return to reflect the actual sockets that were changed.
2. I couldn’t figure out for the life of me why socket_select wasn’t defined. Its because you hadn’t enabled the right extension in php.ini
Ok so heres my slight improvement. The only real thing I did is use a static variable for the socket, to avoid creating a brand new socket on each call of this function. I’m not sure if socket creation will cause things to crash down the line like the other problems reported on here, but if you ask me better safe then sorry.
function Sleeper($mSec)
<
// For dummies like me who spent 5 minutes
// wondering why socket_create wasn’t defined
if(!function_exists(‘socket_create’)) <
die(«Please enable extension php_sockets.dll»);
>
// Do the waiting
socket_select($read=NULL,$write=NULL,$pSock,0,$uSex);
sleep
(PHP 4, PHP 5, PHP 7, PHP 8)
sleep — Задержка выполнения
Описание
Список параметров
Время остановки в секундах.
Возвращаемые значения
Возвращает 0 в случае успешного выполнения или false в случае возникновения ошибки.
Если вызов был прерван сигналом, функция sleep() возвратит значение, не равное нулю. В Windows это значение всегда будет равно 192 (значение константы Windows API WAIT_IO_COMPLETION ). На других платформах возвращаемом значением будет количество секунд, оставшихся до задержки.
Ошибки
Примеры
Пример #1 Пример использования sleep()
// ожидание в течениe 10 секунд
sleep ( 10 );
Этот пример выведет (через 10 секунд)
Смотрите также
User Contributed Notes 24 notes
This may seem obvious, but I thought I would save someone from something that just confused me: you cannot use sleep() to sleep for fractions of a second. This:
re: «mitigating the chances of a full bruit force attack by a limit of 30 lookups a minute.»
Maybe obvious, but this my function to delay script execution using decimals for seconds (to mimic sleep(1.5) for example):
it is a bad idea to use sleep() for delayed output effects as
1) you have to flush() output before you sleep
2) depending on your setup flush() will not work all the way to the browser as the web server might apply buffering of its own or the browser might not render output it thinks not to be complete
netscape for example will only display complete lines and will not show table parts until the
tag arrived
so use sleep if you have to wait for events and don’t want to burn to much cycles, but don’t use it for silly delayed output effects!
I wrote a simple method for sleeping with a float, which also allows you to do milliseconds (via fractional seconds).
=> 0.10017800331116
0.25 => 0.25016593933105
0.5 => 0.50015211105347
1 => 1.0001430511475
1.5 => 1.5003218650818
2 => 2.000167131424
2.5 => 2.5002470016479
?>
Sleep method with parameter in milliseconds :
An example of using sleep to run a set of functions at different intervals. This is not a replacement for multi-threading, but it could help someone that wants to do something cheap. You don’t have to use eval(). It is just used as an example. This is different than running a standard 1 second sleep loop, due to sleeping longer does not consume as much CPU.
// Add some timers (in seconds) with function calls
$sleeptimers = array();
$sleeptimers [ ‘5’ ][ 0 ][ ‘func’ ] = ‘function_a();’ ;
$sleeptimers [ ’10’ ][ 0 ][ ‘func’ ] = ‘function_b();’ ;
$sleeptimers [ ’15’ ][ 0 ][ ‘func’ ] = ‘function_c();’ ;
If you are having issues with sleep() and usleep() not responding as you feel they should, take a look at session_write_close()
as noted by anonymous on comments;
«If the ajax function doesn’t do session_write_close(), then your outer page will appear to hang, and opening other pages in new tabs will also stall.»
Notice that sleep() delays execution for the current session, not just the script. Consider the following sample, where two computers invoke the same script from a browser, which doesn’t do anything but sleep.
Задержка на выполнение скрипта, менее секунды
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Задержка в 2 секунды звука при подключении наушников
Когда нажимаю паузу при просмотре видео, допустим, на Youtube и эта пауза более 10 секунд.
Компьютер включается и через 1 или менее секунды выключатся
Не успевает даже включиться монитор, также кулер не успевает набрать даже половины своей скорости.
time_nanosleep — Откладывает исполнение на заданное число секунд и наносекунд
Решение
Вот, что та я не пойму.
Есть крипт, необходимо, чтобы тот выполнился и через n количество секунд по новой обновилась страница.
В конце скрипт и так и сяк прописывал, ну не получается
Неа, все равно ошибку пишет
Добавлено через 2 минуты
Спс. У меня такой вот еще вопрос.
Самому стало интересно. Нашел на др форуме:
Добавлено через 5 минут
Вот еще есть:
Такой та вариант работает.
Не хотелось бы заборы городить.
Добавлено через 6 минут
Добавлено через 12 секунд
просто пример
Добавлено через 1 минуту
Ну так без \r\n. Каждая строка, как я понял, будет писаться как новая
Добавлено через 4 минуты
nrobert, можете сцылочку на оффдоки, а то я чавойто не нахожу такого.
Добавлено через 21 секунду
нене, стоп.
Добавлено через 6 минут
Вообщем хз в чем была проблема, возможно ковычки.
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Загрузка и выполнение скрипта из другого скрипта
Здравствуйте. У меня динамически скрипт формирует ссылку на которой лежит другой скрипт. Задача.
time_nanosleep
time_nanosleep — Задержка на заданное число секунд и наносекунд
Описание
Откладывает исполнение программы на заданные в параметрах seconds и nanoseconds число секунд и наносекунд соответственно.
Список параметров
Должно быть целым положительным числом.
Должно быть целым положительным числом, меньшим одного миллиарда.
Замечание: В Windows система может откладывать исполнение дольше указанного количества наносекунд, в зависимости от аппаратного обеспечения.
Возвращаемые значения
Возвращает true в случае успешного выполнения или false в случае возникновения ошибки.
Примеры
Пример #1 Пример использования time_nanosleep()
Смотрите также
User Contributed Notes 5 notes
You should take into account, if you use the function replacement down here, the CPU will be in use of 99% for the time of execution.
(A little bit better in this situation is to let the ‘full seconds’ go by a normal sleep command (makes the thread sleep!, and uses minimum cpu))
Documentation states that «seconds» must be positive. This is not correct, 0 is possible.
Rather, «seconds» must be non-negative.
if (! function_exists ( ‘time_nanosleep’ )) <
A response to the note below:
Your function is also useless, as the WinNT 32 kernel only functions at a minimum of about 10+ ms (1,000 us), rendering usleep() useless, because usleep uses the C function which is provided by the system (in this case, kernel32.dll).
You’ll want to use a function that does not rely on the kernel, but rather something made for precise measurement:
Again, most of this depends on the hardware in your system. If you _REALLY_ need to be precise to
This is an alternative function to sleep_nanosecond that you can use with PHP versions below PHP 5.0. It is not very accurate if we talk about nanoseconds but the results are satisfatory. Enjoy!