Странная проблема с записью результата JSON в файл

  • Автор темы Нияз Гильманов
  • 26
  • Обновлено
  • 13, May 2024
  • #1
Я пытаюсь быть уверенным, что извлекаю информацию из внешнего ресурса только тогда, когда ее там еще нет, и поэтому я пытаюсь записать результат в файл, если файла еще нет.

Я использую следующий код:
 

if (file_exists($_SERVER['DOCUMENT_ROOT'].'/utilities/holidays_'.$file_date.'.json')) {

$get_holidays_year_and_month = file_get_contents($_SERVER['DOCUMENT_ROOT'].'/utilities/holidays_'.$file_date.'.json', true);

} else {

$write_to_file = json_decode(file_get_contents('[URL='https://lumtu.com/yti/cEWWEcj1odHRwOi8vaG9saWRheWFwaS5jb20vdjEvaG9saWRheXM_Y291bnRyeT1OTyZ5ZZyT']http://holidayapi.com/v1/holidays?country=NO&year='.$request_year.'&pretty[/URL]'));

file_put_contents($_SERVER['DOCUMENT_ROOT'].'/utilities/holidays_'.$file_date.'.json',$write_to_file);

$get_holidays_year_and_month = file_get_contents($_SERVER['DOCUMENT_ROOT'].'/utilities/holidays_'.$file_date.'.json',true);

}



PHP: Он работает, за исключением того факта, что он ничего не записывает в файл - он создает файл, но файл пуст, и мне интересно, потому ли это, что он возвращает stdObject - если это так, то как это сделать? Я создаю что-то, что можно поместить в файл?

Ошибок не обнаружено, ничего не говорит о том, что это не работает, но по какой-то причине после записи в файле ничего нет.

Если я var_dump() переменную $write_to_file перед file_put_contents(), она будет содержать ожидаемый результат.

Нияз Гильманов


Рег
01 Apr, 2013

Тем
1

Постов
3

Баллов
13
  • 21, May 2024
  • #2
И, конечно же, сразу после того, как я опубликую это здесь, ко мне приходит прозрение, и я вспоминаю то, что забыл. Вот рабочий код:
 

if (file_exists($_SERVER['DOCUMENT_ROOT'].'/utilities/holidays_'.$file_date.'.json')) {

$get_holidays_year_and_month = unserialize(file_get_contents($_SERVER['DOCUMENT_ROOT'].'/utilities/holidays_'.$file_date.'.json', true));

} else {

$write_to_file = json_decode(file_get_contents('[URL='https://lumtu.com/yti/cEWWEcj1odHRwOi8vaG9saWRheWFwaS5jb20vdjEvaG9saWRheXM_Y291bnRyeT1OTyZ5ZZyT']http://holidayapi.com/v1/holidays?country=NO&year='.$request_year.'&pretty[/URL]'));

file_put_contents($_SERVER['DOCUMENT_ROOT'].'/utilities/holidays_'.$file_date.'.json',serialize($write_to_file));

$get_holidays_year_and_month = unserialize(file_get_contents($_SERVER['DOCUMENT_ROOT'].'/utilities/holidays_'.$file_date.'.json',true));

}

PHP: сериализация() и unserialize(), если вы не видите разницы.
 

ru_boxing


Рег
01 Jan, 2011

Тем
0

Постов
1

Баллов
1
  • 06, Jun 2024
  • #3
Да, такое бывает)) Иногда полезно передохнуть и решение проблемы появится само собой) и позвольте мне дать вам небольшой совет - я думаю, так будет немного лучше
 

if (!file_exists($_SERVER['DOCUMENT_ROOT'].'/utilities/holidays_'.$file_date.'.json')) {

$write_to_file = json_decode(file_get_contents('[URL='https://lumtu.com/yti/cEWWEcj1odHRwOi8vaG9saWRheWFwaS5jb20vdjEvaG9saWRheXM_Y291bnRyeT1OTyZ5ZZyT']http://holidayapi.com/v1/holidays?country=NO&year='.$request_year.'&pretty[/URL]'));

file_put_contents($_SERVER['DOCUMENT_ROOT'].'/utilities/holidays_'.$file_date.'.json',serialize($write_to_file));

}

$get_holidays_year_and_month = unserialize(file_get_contents($_SERVER['DOCUMENT_ROOT'].'/utilities/holidays_'.$file_date.'.json', true));
PHP:
 

Nira


Рег
25 Jun, 2013

Тем
3

Постов
4

Баллов
34
Тем
49554
Комментарии
57426
Опыт
552966

Интересно