Framework Foton
Инструмент для профессиональной разработки web приложений
Очереди на Framework Foton с проверкой выполнения

На Framework Foton нет готового инструмента проверки выполнения задачи как например в Laravel, для таких проверок используется встроенных механизм микросервисов который не только проверяет выполнена ли задача, но и условие выполнения задачи, но если вам все таки хочется реализовать такой механизм с помощью очередей в этой статье мы покажем как легко это сделать.

Первое, что нам нужно- это написать метод обработки нашей задачи, там будет вся логика. Сейчас приведем пример такого метода и разберем что он делает по шагам

<?php
  //размещаем код в класс Dev\Cron там уже инициирован класс ядра
    //метод записи в файл
    private function writeFile($path,$step){
        if(file_exists($path)){
            $current = file_get_contents($path);
        }
        else{
            $current = 0;
        }
        $current+=$step;
        file_put_contents($path,$current);
    }
    //метод чтения файла
    private function readFile($path){
        if(file_exists($path)){
            return file_get_contents($path);
        }
        return 0;
    }
    //метод удаления файла
    private function deleteFile($path){
        if(file_exists($path)){
            unlink($path);
        }
    }
    public function task($text){
        //настройки, путь к файлу для хранения количество успешно обработанных операций
        $path = FotonGit('.logs/task.log');
        //количество успешных шагов, после которого нужно удалить задачу
        $maxCount = 12;
        //шаг обновления
        $step = 1;
        //читаем из файла количество уже отработаных шагов
        $count = $this->readFile($path);
        //если оно больше или равно заданному максимуму удаляем задачу и файл логирования
        if($count>=$maxCount){
            $this->core->delWork('task'); 
            $this->deleteFile($path);
            echo $this->cli->green("Запись данных остановлена на шаге $count очередь удалена\r\n");
        }
        //если же нет выполняем задачу и дописываем в файл логов еще один шаг
        else{
            //здесь логика выполнения задачи
            FotonLog($text,'F');
            echo $this->cli->green("Данные записаны в файл текущая позиция $count \r\n");
            //добавляем при успешном выполнении еще 1,2,3 и т.д. записей в зависимости от $step
            $this->writeFile($path,$step);
        }
    }

Теперь остается только инициировать запуск этой очереди в любом месте программу где доступен метод ядра

$this->core->cron(‘task’,[‘тестовый текст’]);
© Copyright 2017 - 2026 Разработано на Framework Foton
Продукт зарегистрирован в Роспатенте