@9StarRu

Как ограничить кол-во сохраняемых данных в файл?

У меня на сайте есть функция, которая сохраняет данные в json файл и по мере работы удаляет его и вновь создает.

Как ограничить кол-во сохраняемых в файл данных, например, 5.
Данные сохраняются по мере работы, нужно сделать так, чтобы сохранялись самые последние, т.е. если уже есть 5 и появились новые, файл нужно перезаписать новыми данными, сохранив при необходимости часть старых, если новых появилось 2, то оставить 3 старых.
Надеюсь понятно смог объяснить.

Пример содержимого файла:
[{"id":"195","post_key":"what"},{"id":"193","post_key":"dve"}..........и.т.д...............]


Код

if($result_site){

                    $page = buildPage($result_site);
                    $page_permalink = $page->permalink();
                    $page_key = $page->key();

                    $this->addPosted($post->id, 'site', ['url' => $page_permalink]);

                    $this->helper('workspace')->select('tmp-mailing_list')->insertIfNotExists(['id' => $post->id], [
                        'id' => $post->id,
                        'post_key' => $page_key,
                    ]);

                    $post->url = $page_permalink;

                    $this->log([
                        'id' => $post->id,
                        'service' => 'site',
                        'status' => 'success',
                        'message' => 'опубликовано <a href="'.$page_permalink.'" target="_blank">'.$page_permalink.'</a>',
                        'params' => []
                    ]);
                }else{
                    $this->log([
                        'id' => $post->id,
                        'service' => 'site',
                        'status' => 'danger',
                        'message' => 'неизвестная ошибка',
                        'params' => []
                    ]);
                }


и

class WorkspaceHelper{

    private $filePath;
    private $suffix = '.json';

    public $workspace;

    public function select($filename)
    {

        $this->filePath = $this->workspace.$filename.$this->suffix;

        if(!Filesystem::fileExists($this->filePath)){
            fclose(fopen($this->filePath,'x'));
        }

        return $this;
    }
.....


Сам файл удаляется по крону после выполнения основной задачи, далее формируется файл по новой.
Вот до выполнения основной задачи, нужно сделать так, чтобы в файле было не более 5 параметров.

Спасибо!
  • Вопрос задан
  • 58 просмотров
Пригласить эксперта
Ответы на вопрос 1
inoise
@inoise Куратор тега PHP
Solution Architect, AWS Certified, Serverless
Не проще ли использовать базу данных и выбирать последние 5 записей по дате?
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы