📈sflash.biz
С нами с 03.11.12
Сообщения: 3913
Рейтинг: 4447
|
Добавлено: 12/02/17 в 19:02 |
Подскажите, как консольный php скрипт можно запускать с чатотой 1 секунда или реже, но только если старый запуск ещё не отработал?
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 12/02/17 в 19:10 |
что за извращение такое?
возможно поможет решение через php daemon
|
|
|
|
Soul's Buyer
С нами с 16.11.05
Сообщения: 12702
Рейтинг: 10740
|
Добавлено: 12/02/17 в 19:26 |
А "ещё не отработал" на "уже отработал" точно не нужно в вопросе изменить?
|
|
|
|
📈sflash.biz
С нами с 03.11.12
Сообщения: 3913
Рейтинг: 4447
|
Добавлено: 12/02/17 в 21:56 |
Цитата: | или реже, но только если старый запуск ещё не отработал |
вот так верно!
Т.е. реже 1 секунды только в том случае, если не успел отработать предыдущий.
|
|
|
|
📈sflash.biz
С нами с 03.11.12
Сообщения: 3913
Рейтинг: 4447
|
Добавлено: 12/02/17 в 21:58 |
ibiz писал: | что за извращение такое?
возможно поможет решение через php daemon |
Ну, предположим, запустил я его демоном, а в демоне цикл вечный поставить?
ХЗ, тогда в чём разница, если без демона запустить этот же php?..
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 12/02/17 в 22:29 |
S_Flash писал: | Ну, предположим, запустил я его демоном, а в демоне цикл вечный поставить?
ХЗ, тогда в чём разница, если без демона запустить этот же php?.. |
идея не совсем такая,
ты запускаешь консольный php скрипт с чатотой 1 секунда или реже,
чтоб он что-то делал/выполнял, верно?
так вот тоже самое может выполнять php daemon, с оптимальным потреблением памяти, контролем и проверкой результатов исполнения твоего кода
только возьми готовый фреймворк, ибо с самопальным вечным циклом сожрешь весь CPU
|
|
|
|
📈sflash.biz
С нами с 03.11.12
Сообщения: 3913
Рейтинг: 4447
|
Добавлено: 12/02/17 в 22:40 |
ibiz писал: | идея не совсем такая,
только возьми готовый фреймворк, ибо с самопальным вечным циклом сожрешь весь CPU |
А есть что-то из конкретного?
|
|
|
|
С нами с 21.10.09
Сообщения: 267
Рейтинг: 408
|
Добавлено: 12/02/17 в 22:54 |
S_Flash писал: | А есть что-то из конкретного? |
Внезапно phpdaemon
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 12/02/17 в 23:07 |
да вот этих ребят можно пробовать, сам пользовал долгое время, у них раньше был форум на русском, сейчас все переделали
|
|
|
|
С нами с 19.11.02
Сообщения: 95
Рейтинг: 218
|
Добавлено: 12/02/17 в 23:56 |
Код: | while sleep 1; do php -q yourphp.php args; done |
и все это в скрине
|
|
|
|
📈sflash.biz
С нами с 03.11.12
Сообщения: 3913
Рейтинг: 4447
|
Добавлено: 17/02/17 в 22:29 |
А что быстрее работает баш или консольный php?
Смысл подобрать язык, технологию или фреймворк для написания бота отслеживающего данные из некого удалённого https api и сохранять его в mysql базу (можно другую базу). Частотата запросов примерно 1 в секунду или реже, если оттвечающая сторона тупит.
За что ухвататиться?
|
|
|
|
www.phpdevs.com
С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105
|
Добавлено: 17/02/17 в 22:39 |
S_Flash писал: | За что ухвататиться? |
за демона, запущенного один раз, висящего в памяти и периодически опрашиваюшего клиента. А так как работа с базой, то явно php лучше. Но вот точно ли надо каждую секунду опрашивать ?
|
|
Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.
|
8
|
|
|
📈sflash.biz
С нами с 03.11.12
Сообщения: 3913
Рейтинг: 4447
|
Добавлено: 17/02/17 в 23:09 |
Stek писал: | за демона, запущенного один раз, висящего в памяти и периодически опрашиваюшего клиента. А так как работа с базой, то явно php лучше. Но вот точно ли надо каждую секунду опрашивать ? |
там чем чаще, тем лучше - это биржа.
|
|
|
|
С нами с 29.06.15
Сообщения: 19
Рейтинг: 32
|
Добавлено: 19/02/17 в 22:07 |
вот набросал.
вставляешь в начале скрипта и прописываешь в крон запуск каждую секунду
Код: |
$file_name = basename(__FILE__);
if (file_exists($file_name.'.lock'))
{
$pid = file_get_contents($file_name.'.lock');
$cmd = 'kill -s 0 '.$pid.' 2>&1';
exec($cmd, $output, $return_var);
if (empty($output))
{
echo 'process is still running: '.$pid."\n";
die;
}
}
$pid = getmypid();
file_put_contents($file_name.'.lock', $pid);
echo 'starting new script instance: '.$pid."\n";
|
|
|
|
|
С нами с 19.11.02
Сообщения: 95
Рейтинг: 218
|
Добавлено: 20/02/17 в 07:44 |
victorsp, в кроне емнип нет посекундного запуска. по крайней мере в дефолтном.
возвращаясь к своему совету, так сказать дополнение.
в deb линуксах есть десятичный sleep, т.е. sleep 0.2 например
Код: | while sleep 0.2; do php -q yourscript.php args; done |
значения меньше 0.2 начинают пригружать IO, хотя в один поток надо экспериментировать.
из плюсов метода, скрипт будет запущен всегда только один.
из минусов, если скрипт завис то всё, капут. надо перезапускать.
хотя зависание скрипта - как правило существоавние неких sleep внутри и бесконечных циклов. во всех остальных случаях переменная времени жизни скрипта может прибивать его работу
Код: |
<?php
set_time_limit(5); // 5 секунд
остальной код
?>
|
и не даст скрипту зависнуть.
|
|
|
|