Используйте 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