@Sorax15

Выполнение скрипта раз в 5 секунд?

Добрый вечер,подскажите пожалуйста, как написать функцию, или кусок кода, который бы выполнялся каждые 5 секунд, без крон задачи в бд
  • Вопрос задан
  • 134 просмотра
Пригласить эксперта
Ответы на вопрос 4
  • OKyJIucT
    @OKyJIucT
    Sunshine reggae
    Создайте такой код и через консоль запустите.
    while(true) {
    
    // какой то код
    
    sleep(5);
    }


    Но тут есть два известных мне нюанса - как только вы закроете консоль, скрипт прекратит работу (решается использованием так называемого скрина screen). И второй - на сервере может быть временной лимит на выполнение скриптов. На шаред хостингах он обычно не превышает 120 секунд.

    И еще один момент - если скрипт не оптимизирован, он будет поджирать память, пока она не кончится и ОС его не грохнет.

    Либо как вариант можете использовать PM2 для NodeJS - там можно в фоне держать процессы, не нужен крон и бд, но нужен NodeJS.
    Ответ написан
  • solotony
    @solotony
    code for food, caviar preferably
    использовать процессы/потоки. родитель раз в 5 секунд плодит по новому процессу. детские процессы. отрабатывают твои задачи.
    Ответ написан
  • AK-VoronM
    @AK-VoronM
    "Мало-мало программист"
    //Проверяем есть ли запущенные процессы скрипта контроллера
    if (getCurrentProcTasks(basename(__FILE__)) > 2) {
        exit("Уже есть запущенные копии контроллера\n");
    }
    
    while (true) {
        // do somethings
        // тут легко можно запускать отдельные скрипты, которые выполняются дольше 5 секунд через exec
        sleep(5);
    } 
    
    function getCurrentProcTasks($php_file)
    {
        $proc = [];
        $cmd = 'ps aux | grep "' . $php_file . '"';
        exec($cmd, $proc);
        $count = count($proc);
        return $count - 2;// 2 - это системные строки, возникающие в результате работы команды grep.
    }


    Вот такой скрипт можно запускать из крона раз в 1-5 минут, для контроля выполнения.
    Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
Zaymigo Нижний Новгород
от 20 000 до 100 000 руб.
Devmasterz Тюмень
от 80 000 до 120 000 руб.
16 июля 2018, в 20:00
5000 руб./за проект
16 июля 2018, в 18:53
8000 руб./за проект