Как я могу временно хранить данные JSON на моем сервере Apache. В JSON есть некоторая информация о пользователях. Было бы здорово, если бы файлы удалялись каждые 24 часа.
$json_array = array();
while($row = mysqli_fetch_assoc($result))
{
$json_array[] = $row;
}
$final_array = json_encode($json_array);
Таким образом, я создаю файл JSON и могу также сохранить его в файле .json, но как я могу создать временные файлы с этими данными в нем. И этот файл должен быть доступен только для чтения с сервера.
Используйте 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
в котором вы храните данные, и 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
Почему ты так много думаешь? почему бы не попробовать php сессию или cookie в течение 24 часов или браузер js localStorage?
если нужен временный файл, создайте файл на сервере Apache, используя php-Apache, методы создания и записи файлов через 24 часа удалите этот файл, используя Cron Job.