У меня на сайте есть функция, которая сохраняет данные в 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 параметров.
Спасибо!