Сохранить данные JSON во временном файле и удалить через 24 часа? - PullRequest
1 голос
/ 14 марта 2019

Как я могу временно хранить данные JSON на моем сервере Apache. В JSON есть некоторая информация о пользователях. Было бы здорово, если бы файлы удалялись каждые 24 часа.

$json_array = array(); 
 while($row = mysqli_fetch_assoc($result)) 
 { 
 $json_array[] = $row; 
 } 

 $final_array = json_encode($json_array);

Так вот так я создаю файл JSON, и я также могу сохранить его в файле .json, но как мне создать временные файлы с этими данными в нем. И этот файл должен быть доступен только для чтения с сервера.

Ответы [ 2 ]

0 голосов
/ 14 марта 2019

Используйте file_put_contents для хранения данных, но создайте некоторый префикс для каждого пользователя, чтобы вы могли иметь отдельные файлы и получать их после:

 $json_array = array(); 
 while($row = mysqli_fetch_assoc($result)) 
 { 
 $json_array[] = $row; 
 } 

 $final_array = json_encode($json_array);
 $generatedName = 'userIDprefix_userData' .  '.json'; //replace userIDprefix with user ID, this way we can use prefix to store different files per user, and retrieve file for user
 //use file put contents to store data 
 file_put_contents('path/to/json/data/' . $generatedName , $final_array);

Используйте file_get_contents() для извлечения данных файла:

 $generatedName = 'userIDprefix_userData' .  '.json'; //replace userIDprefix with user ID, this way we can use prefix to store different files per user, and retrieve file for user
 //use file put contents to store data 
 $userJSONData = file_get_contents('path/to/json/data/' . $generatedName );

А затем настройте запуск cron, скажем, каждые 5 минут, используйте glob и filemtime для сканирования каталога, в котором вы храните данные, и filemtime, чтобы получить временную метку файла, сравнить с текущей датой и удалить, если она старше 24 ч

$past24hours = strtotime('-24 hours');
foreach (glob("path/to/json/data/*.json") as $filename) {
   if( filemtime($filename) < $past24hours ){
     unlink($filename);
    }
}

Настройка cron для запуска файла, в котором должен запускаться скрипт удаления файлов json, скажем, каждые 10 минут:

*/10 * * * * /usr/bin/php /path/to/script/to/delete-json.php

Примечание:

Не устанавливайте для этой папки разрешения 777, по крайней мере 775 или даже 755. Также, чтобы предотвратить прямой доступ к файлам .json, поместите в эту папку хотя бы пустые index.php и .htaccess с содержимым:

#forbid access to folders and to files  
 RewriteEngine on 
 RewriteRule \.(json|txt)$ - [F] 
 deny from all
0 голосов
/ 14 марта 2019

Почему ты так много думаешь?почему бы не попробовать php-сессию или cookie-файл в течение 24 часов или браузер js localStorage?

, если нужен временный файл, создайте файл на сервере Apache, используя методы создания и записи файлов php-Apache, после 24 часов удалите этот файл, используя Cron Job

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...