Работа скрипта каждую секунду
Вот собственно и вопрос, как мне сделать запуск скрипта каждую секунду. Просто на кроне это возможно лишь раз в минуту, облазил весть интернет, видел много способов, пробывал, но ответ так и не нашел. Мне нужно что бы скрипт работал, даже когда никого нету на сайте, это возможно?
Php выполнение скрипта каждую секунду
Здравствуйте, подскажите пожалуйста, как можно решить задачу: делаю интернет аукцион и после.
Запуск скрипта каждую секунду (cronjob)
Довольно давно есть у меня скрипт, который нужно запускать каждую секунду. Я, конечно, гуглил, но.
Каждую секунду по 1-3 пользователю — как они это сделали?
Всем привет. Каждую секунду по 1-3 пользователю, как сделать типа такого? Можно код. Спасибо.
Запуск php скрипта каждую минуту(например) OpenServer 5.2.2
нужно сделать запуск скрипта test.php каждую минут (каждый час, хоть как) пробовал делать так.
Сообщение от edward_freedom
Тоесть если я сделаю бесконечный цикл и зайду 1 раз на эту страницу, закрою её, то она будет работать?
Сообщение от Vitaliy5
Тоесть если я сделаю бесконечный цикл и зайду 1 раз на эту страницу, закрою её, то она будет работать?
Сообщение от Azdeman
Добавлено через 1 минуту
Огорчили( А какой выход есть?
на VPS будет работать? Других вариантов нету?
Vitaliy5, то что тебе нужно называется демон, в гугле можно найти реализации демона на php
Сообщение от Azdeman
Сообщение от Vitaliy5
Запускать раз в минуту скрипт с циклом, который выполняется 60 раз, с задержкой в 1 секунду после каждого прохождения
Сообщение от TrustNo1
Запускать раз в минуту скрипт с циклом, который выполняется 60 раз, с задержкой в 1 секунду после каждого прохождения
Добавлено через 50 секунд
Сообщение от Jewbacabra
Vitaliy5, то что тебе нужно называется демон, в гугле можно найти реализации демона на php
Почитал про демона, нашел статью где запускается через консоль и т.п.. я так понимаю это нельзя сделать на обычном хостинге, нужен VPS, да?
Сообщение от Vitaliy5
А почему нет-то?)
Опишите задачу более подробно, откуда нам знать зачем вам каждую секунду запускать что-то
Сообщение от Vitaliy5
Ну если шаред хостинг и есть крон ну пускай будет раз в 1, 5, 10 минут, не важно, по крону запускаться и циклично повторяться в течении определенного времени, потом умирать и заново запускаться по крону.
Сообщение от TrustNo1
А почему нет-то?)
Опишите задачу более подробно, откуда нам знать зачем вам каждую секунду запускать что-то
У меня есть нормальный крон, купленный.
Задача состоит в том, что скрипт каждую секунду проверяет значение из бд, если оно совпадает с текущем временем, он записывает определенному пользователю результат.
Тоесть если я буду запускать его каждых 10 минут в цикле 600 секунд со sleep в 1 секунду, то все будет хорошо работать?)
Сообщение от Vitaliy5
Тоесть если я буду запускать его каждых 10 минут в цикле 600 секунд со sleep в 1 секунду, то все будет хорошо работать?)
По чем крон нормальный купленный нынче?)
Сообщение от Vitaliy5
оесть если я буду запускать его каждых 10 минут в цикле 600 секунд со sleep в 1 секунду, то все будет хорошо работать?)
только учти что он будет работать 600 секунд + 600*время одной итерации, то есть больше 10 минут. Нужно еще контролировать время, когда запустится следующий скрипт по крону.
Сообщение от TrustNo1
По чем крон нормальный купленный нынче?)
Добавлено через 49 секунд
Сообщение от Jewbacabra
только учти что он будет работать 600 секунд + 600*время одной итерации, то есть больше 10 минут. Нужно еще контролировать время, когда запустится следующий скрипт по крону.
Как вариант внутри скрипта через exec запускать себя же после определённого времени (microtime) и тут же завершаться, таким образом он будет бесконечно работать будучи запущенным один раз
Но для подстраховки можно поставить его все же на крон, а в начало скрипта вставить проверку чтобы второй экземпляр не запускался. Таким образом если скрипт вдруг упадёт, то по крону автоматом восстановится
Сообщение от insideone
Как вариант внутри скрипта через exec запускать себя же после определённого времени (microtime) и тут же завершаться, таким образом он будет бесконечно работать будучи запущенным один раз
Но для подстраховки можно поставить его все же на крон, а в начало скрипта вставить проверку чтобы второй экземпляр не запускался. Таким образом если скрипт вдруг упадёт, то по крону автоматом восстановится
Крон блокирует мои действие, после некоторых проделанных операций, написали что проблемы с одним из скриптом, а я запускаю его, и потом в нем цикл делаю.. Даже не знаю что теперь делать
Добавлено через 58 минут
Сообщение от insideone
Как вариант внутри скрипта через exec запускать себя же после определённого времени (microtime) и тут же завершаться, таким образом он будет бесконечно работать будучи запущенным один раз
Но для подстраховки можно поставить его все же на крон, а в начало скрипта вставить проверку чтобы второй экземпляр не запускался. Таким образом если скрипт вдруг упадёт, то по крону автоматом восстановится
EvTimer::__construct
Если время повтора равно 0.0 , то он будет автоматически остановлен после истечения времени ожидания. Если положительное, таймер будет автоматически настроен на повторный запуск каждые повторяющиеся секунды, пока не будет остановлен вручную.
Пользовательские данные, связанные с наблюдателем.
Примеры
Пример #1 Простые таймеры
// Создаёт и запускает таймер через 2 секунды
$w1 = new EvTimer ( 2 , 0 , function () echo «2 секунды прошло\n» ;
>);
?php
// Создаёт и запускает таймер через 2 секунды, повторяя каждую секунду
// пока мы не остановим его вручную
$w2 = new EvTimer ( 2 , 1 , function ( $w ) echo «вызывается каждую секунду, запускается через 2 секунды\n» ;
echo «итерация color: #007700″>, Ev :: iteration (), PHP_EOL ;
// Останавливаем наблюдателя после 5 итераций
Ev :: iteration () == 5 and $w -> stop ();
// Останавливаем наблюдателя, если дальнейшие вызовы вызовут более 10 итераций
Ev :: iteration () >= 10 and $w -> stop ();
>);
// Создаём остановленный таймер. Он будет неактивным, пока мы не запустим его сами
$w_stopped = EvTimer :: createStopped ( 10 , 5 , function( $w ) echo «Callback-функция таймера, созданного как остановленный\n» ;
// Останавливаем наблюдателя после 2 итераций
Ev :: iteration () >= 2 and $w -> stop ();
>);
// Цикл до вызова Ev::stop() или остановки всех наблюдателей
Ev :: run ();
// Запускаем и смотрим, работает ли он
$w_stopped -> start ();
echo «Запустили одну итерацию\n» ;
Ev :: run ( Ev :: RUN_ONCE );
echo «Перезапустили второй наблюдатель и пробуем обработать те же события, но не блокируем\n» ;
$w2 -> again ();
Ev :: run ( Ev :: RUN_NOWAIT );
$w = new EvTimer ( 10 , 0 , function() <>);
echo «Запуск заблокированного цикла\n» ;
Ev :: run ();
echo «END\n» ;
?>
Результатом выполнения данного примера будет что-то подобное:
2 секунды прошло вызывается каждую секунду, запускается через 2 секунды итерация = 1 вызывается каждую секунду, запускается через 2 секунды итерация = 2 вызывается каждую секунду, запускается через 2 секунды итерация = 3 вызывается каждую секунду, запускается через 2 секунды итерация = 4 вызывается каждую секунду, запускается через 2 секунды итерация = 5 Запустили одну итерацию Callback-функция таймера, созданного как остановленный Перезапустили второй наблюдатель и пробуем обработать те же события, но не блокируем Запуск заблокированного цикла вызывается каждую секунду, запускается через 2 секунды итерация = 8 вызывается каждую секунду, запускается через 2 секунды итерация = 9 итерация каждую секунду, запускается через 2 секунды итерация = 10 END
Смотрите также
Как я могу запускать php-скрипт каждую секунду?
В настоящее время я пишу онлайн-игру. Теперь я должен проверить, произошло ли событие (проверка метки времени в базе данных) и в зависимости от того, какие действия выполняются. Я должен проверять событие каждую секунду.
Я хотел использовать cronjob, но с помощью cron вы можете запускать скрипт только каждую минуту.
Моя идея состояла в том, чтобы использовать cron и loop 60 раз в моем PHP-скрипте. Но я думаю, что это не лучшее решение.
Итак, каков наилучший способ запуска скрипта каждую секунду?
Почему бы не изменить сценарий так, чтобы он просто повторял код каждую секунду? Это уменьшит накладные расходы синтаксического анализа и будет менее сложным.
Вероятно, вы должны запустить сценарий один раз и использовать цикл с задержкой для достижения желаемого времени. Боковое преимущество заключается в том, что это более эффективно, и вам нужно будет только открыть ресурсы (то есть базы данных) один раз.
Вы не должны этого хотеть: P. Ни один хост не примет ваш cronjob, который работает каждую секунду каждую минуту? Вы можете сэкономить время, которое оно запустило в базе данных, а в следующий раз, когда вы запустите, подсчитайте время между обеими запусками и сделайте необходимые вычисления. каждая секунда – очень плохая идея.
Я искал лучшее решение, но кажется, что моя первая идея с чистым кодом – лучшее решение.
$total_time = 0; $start_time = microtime(true); while($total_time < 60) < //DoSomethingHere; echo $total_time."\n"; //sleep(5); $total_time = microtime(true) - $start_time ; >
добавьте это в crontab для запуска каждую минуту.
Запуск PHP скрипта каждую секунду
Здравствуйте.
Есть такая задача, запускать скрипт PHP каждую секунду (для торговли на криптовалютной бирже).
Немного погуглил и нашел кое-что
https://askubuntu.com/questions/800/how-to-run-scripts-every-5-seconds
http://www.cyberforum.ru/php-beginners/thread721682.html
В целом я понимаю так, что использовать бесконечный цикл while не очень разумное решение, так команды могут пересекаться.
На мой взгляд лучшее решение такое: в панели хостинга создаю крон ежеминутный. И к нему подвешиваю файл:
(sleep 1 && php -q /var/www/binance/wp-content/themes/sparkling/inc/mycron.php) & (sleep 2 && php -q /var/www/binance/wp-content/themes/sparkling/inc/mycron.php) & (sleep 3 && php -q /var/www/binance/wp-content/themes/sparkling/inc/mycron.php) & (sleep 4 && php -q /var/www/binance/wp-content/themes/sparkling/inc/mycron.php) & (sleep 5 && php -q /var/www/binance/wp-content/themes/sparkling/inc/mycron.php) & (sleep 6 && php -q /var/www/binance/wp-content/themes/sparkling/inc/mycron.php) & (sleep 7 && php -q /var/www/binance/wp-content/themes/sparkling/inc/mycron.php) & (sleep 8 && php -q /var/www/binance/wp-content/themes/sparkling/inc/mycron.php) & (sleep 9 && php -q /var/www/binance/wp-content/themes/sparkling/inc/mycron.php) & (sleep 10 && php -q /var/www/binance/wp-content/themes/sparkling/inc/mycron.php) & (sleep 11 && php -q /var/www/binance/wp-content/themes/sparkling/inc/mycron.php) & (sleep 59 && php -q /var/www/binance/wp-content/themes/sparkling/inc/mycron.php) &
Однако мешает простое непонимание правильности написания bash скриптов.
Пожалуйста, напишите за меня тот файл, котрый будет вызываться ежеминутным кроном.
И заодно. Правильно ли то, что такое решение лучше, чем через while ?
Спасибо!