Для повторного выполнение важных скриптов или процессов, подойдут системные инструменты и простые скрипты, в том числе на PHP.
Обычно достаточно задействовать возможности bash:
#!/bin/bash
while [ “true” ]; do
/path/to/script.php
sleep 15
done
## Бесконечный bash-скрипт выполнения нужного PHP скрипта каждые 15 секунд
Делаем то же, но без использования отдельного скрипта bash:
while [ "true" ]; do /path/to/script.php; sleep 15; done
## Повторение скрипта PHP каждые 15 секунд консольной командой
Для этой цели подходит демон cron, который поставляется с UNIX-системами:
# crontab -e
*/5 * * * * /usr/bin/php -f /usr/local/bin/script.php &> /dev/null
## Добавить путь к скрипту в файл конфигурации crontab, выполнять каждые 5 минут, без логирования
Учтите, что желательно предотвращать одновременное выполнение нескольких образцов скрипта. Для этого можно использовать проверку временного файла:
if(file_exists('/tmp/script.lock')){
exit();
}
file_put_contents(‘/tmp/script.lock’,”);
# Здесь выполняется нужный код
unlink(‘/tmp/script.lock’);
## Внутрь можно поместить сам код скрипта или ссылку на выполнение нужного скрипта
И уже созданный новый скрипт помещаете в crontab.
Примечательно, что можно проверять список процессов ОС, чтобы нужная программа не повторялась:
#!/bin/sh
if ps -ef | grep -v grep | grep script.php ; then
exit 0
else
/home/user/bin/script.php >> /home/user/bin/script_php.log &
exit 0
fi
## Проверяет script.php в выполняющихся процессах, запускает, если не выполняется
Полученный скрипт нужно запустить в cron на повторение.
Повторное выполнение скриптов возможно доступными средствами PHP.
Пригодится расширение для управления процессами pcntl. Следующий скрипт перезапускается автоматически после выполнения:
echo ++$argv[1]; # подсчет перезапусков
$_ = $_SERVER[‘_’];
echo “n=Запуск=n”;
# Здесь размещается нужный код для выполнения
$cnt = 0;
while( $cnt++ < 10000000 ){}
echo “n= Выполнено =n”;
# Перезапуск скрипта
**pcntl_exec($_, $argv);**
## Также можно указать полный путь к скрипту
Такой подход используется для перезапуска скрипта в случае непредвиденного завершения:
echo ++$argv[1];
$_ = $_SERVER[‘_’];
register_shutdown_function(function () {
global $_, $argv; # Ссылка на глобальные переменные
# Перезапуск
pcntl_exec($_, $argv);
});
echo “n=Запуск=n”;
# Здесь размещается нужный код для выполнения
$cnt = 0;
while( $cnt++ < 10000000 ){}
echo “n= Выполнено =n”;
die;
pcntl_exec($_, $argv);
## В этом случае необходимо правильно завершить выполнение (die)
Еще один вариант автоматического перезапуска скриптов – отлавливание сигналов, описанное в статье об отказоустойчивости в PHP.
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…