Сериализация

04.06.2014

Как то я занимался проектом, который делает сложные (долгие) расчеты каждый день. Запуск расчетов осуществлялся по крону. Результаты сериализовались функцией serialize и сохранялись в файл. Затем можно было посмотреть результаты в табличке за произвольный промежуток времени, они доставались из файла, превращались обратно в массив функцией unserialize.

Разрабатываю я проекты на винде, а работают они потом в линукс системах. Чтобы во время отладки проекта, не прогонять долгие расчеты и там и там, я копировал файлы с сериализованными результатами с одной системы на другую... И... и иногда они оказывались несовместимы между собой! Вот такой вот сюрприз.


$A = array([...]);
$S = serialize($A); //на линукс системе
$A1 = unserialize($S); //на виндовс системе
$A != $A1;

Вот как то так.

Если у вас будет необходимость переносить результаты сериализации между различными системами, используйте json_encode() и json_decode()

У json_decode вторым параметром идет bool $assoc = false, т.е. функция будет возвращать объект, если нужен массив, передавайте true

Подробное описание функций на php.net:

serialize()
unserialize()
json_encode()
json_decode()

Комментарии:

антон

21.11.2019 12:06:49

я бы уточнил: json_encode() подходит если нет пересечения символов с кодируемым текстом

Оставить комментарий:

Представьтесь пожалуйста:
Электронная почта:
Электронный адрес не публикуются
Текст сообщения:
Для подсветки кода, оборачивайте ваш код в теги <code></code>
Введите 5 цифр с картинки:

Рекомендую:

Поделюсь промокодами для хостинга TimeWeb!

Поддержать проект: