@Sorax15

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

Добрый вечер,подскажите пожалуйста, как написать функцию, или кусок кода, который бы выполнялся каждые 5 секунд, без крон задачи в бд
  • Вопрос задан
  • 124 просмотра
Пригласить эксперта
Ответы на вопрос 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
Похожие вопросы
Вакансии с Моего Круга
Заказы с Фрилансим