powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / А можно из MySQL сделать простенький кеш ?
7 сообщений из 7, страница 1 из 1
А можно из MySQL сделать простенький кеш ?
    #39802016
anstrem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С некоторого внешнего сервера через API загружаются данные об условиях доставки по городам.
Хрен его знает в чем они там приходят (библиотеку не разбирал), подозреваю JSON.
Короче у меня в итоге в PHP получается некий объект, у которого есть один параметр - город, ну и какое то содержание внутри (много объектов, строк, полей и букв).

$delivery_list_request = $SL->get_deliveries_tarifs($city_to_name, $weight)
Разбирается вся эта муть внутри вот так:
foreach ($delivery_list_request->tarifs->tarif as $tarif) {
$delivery = array();
$delivery["price"] = $tarif->price->__toString();
$delivery["tarifs_type"] = $tarif->tarifs_type->__toString();
$delivery["srok_dostavki"] = $tarif->srok_dostavki->__toString();
$delivery["pickup_place"] = $tarif->pickup_place->__toString();
$delivery["address"] = $tarif->address->__toString();
$delivery["proezd_info"] = $tarif->proezd_info->__toString();
$delivery["phone"] = $tarif->phone->__toString();
$delivery["worktime"] = $tarif->worktime->__toString();
$delivery["comission_percent"] = $tarif->comission_percent->__toString();
$delivery["is_terminal"] = $tarif->is_terminal->__toString();
...
...

Собственно сейчас меня внутреннее содержимое $delivery_list_request вообще не интересует, мне надо его сохранять как единый объект.

Подскажите (если это возможно), могу я сделать в mysql простую таблицу с условно двумя полями City и Delivery и запихивать туда как в кеш это $delivery_list_request , чтобы обращаться в внешнему источнику скажем раз в сутки, а в промежутках извлекать содержимое из своей базы.

Т.е. в City собственно будет город как понятно из названия, а в Delivery будет запихиваться все содержимое $delivery_list_request - вот как оно есть внутри без разбора что это за структура и из чего состоит, одним объектом. И чтобы также одним объектом его обратно можно было прочитать и в результате в $delivery_list_request оказалось тоже самое что из него до этого было положено в базу.

Как это реализовать по простому ? Про City все понятно, вопрос какого типа поле создать под $delivery_list_request и какой командой запихнуть туда объект целиком не заморачиваясь разбором его структуры (ну и потом также извлекать) ? Такое вообще возможно ?
...
Рейтинг: 0 / 0
А можно из MySQL сделать простенький кеш ?
    #39802059
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
А можно из MySQL сделать простенький кеш ?
    #39802078
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrow https://dev.mysql.com/doc/refman/8.0/en/json.html
оно и без этого работает
храним подобным образом клиентские настройки экономических графиков, разрезе по каждому инструменту, ~30 гигабайт данных, но чтение и запись всего json целиком
...
Рейтинг: 0 / 0
А можно из MySQL сделать простенький кеш ?
    #39802080
anstrem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ScareCrow https://dev.mysql.com/doc/refman/8.0/en/json.html

Там по ссылке как раз как работать с эффективно со структурами JSON в SQL в смысле искать, извлекать или менять отдельные элементы JSON внутри SQL

Мне то это ничего не надо, мне нужно сохранить нечто условно в бинарном виде и потом его же извлечь, что там внутри JSON, не JSON, какая структура, я даже знать не хочу, просто положил в коробку, извлек обратно.
...
Рейтинг: 0 / 0
А можно из MySQL сделать простенький кеш ?
    #39802092
anstrem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. что то типа

INSERT INTO delivery(city, delivery) VALUES('Moscow', $delivery_list_request);
будет работать ?

где $delivery_list_request это какой то непонятный объект неважно что содержащий (толи JSON, то ли массив массивов)
какой типа для поля надо указать ?
как то обработать содержимое $delivery_list_request надо перед этим ? Оно же может содержать что угодно и какие угодно символы, в том числе не совсем пригодные для хранения в MySQL
...
Рейтинг: 0 / 0
А можно из MySQL сделать простенький кеш ?
    #39802103
anstrem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сорри, глянул внутрь, про JSON тут вообще было зря написано
там обычный XML внутри переменной возвращается

типа вот такого:

<answer>
<error>0</error>
<deliveries>
<delivery>
<code>135833991800056758</code>
<delivery_date>2012-03-26</delivery_date>
<deliveries_type>Обычная</deliveries_type>
<from_city>Санкт-Петербург</from_city>
<track_number>000000001</track_number>
<to_city>Москва</to_city>
<time_from>15:33</time_from>
<time_to>19:33</time_to>
<order_id>5555551</order_id>
<metro>Бибирево</metro>
<pickup_place/>
<address>ул. Ленина 22-11</address>
<contact_person>Василий</contact_person>
<phone>2323233232</phone>
<price>12000</price>
<ocen_price>0</ocen_price>
<additional_info>Доп. инфо!!!</additional_info>
<site_name>www.site.com</site_name>
<delivery_time>00:00</delivery_time>
<status>Новый</status>
<payment_status/>
<vozvrat_status/>
<comments/>
<errors/>
<partial_ransom>0</partial_ransom>
<delivery_price_for_customer></delivery_price_for_customer>
<return_shipping_documents>1</return_shipping_documents>
<use_from_canceled>0</use_from_canceled>
<number_of_place>1</number_of_place>
<delivery_speed>normal</delivery_speed>
<oplacheno_poluchatelem>0</oplacheno_poluchatelem>
<voozvratov_na_summu>0</voozvratov_na_summu>
<delivery_price>0</delivery_price>
<main_tarif>0</main_tarif>
<payment_for_ds>0</payment_for_ds>
<additional_pack>0</additional_pack>
<additional_weekend>0</additional_weekend>
<additional_packing_list>0</additional_packing_list>
<additional_mkad>0</additional_mkad>
<additional_barcode>0</additional_barcode>
<additional_back_region>0</additional_back_region>
<additional_documentation>0</additional_documentation>
<additional_partial_return>0</additional_partial_return>
<additional_sms>0</additional_sms>
<current_filial>Московский филиал</current_filial>
<reciver_filial>Санкт-Петербург</reciver_filial>
<reciver_filial_code>000000001</reciver_filial_code>
<current_filial_code>000000002</current_filial_code>
<delivery_partner>000000009</delivery_partner>
<customer_email>test@test.com<;/customer_email>
<barcodes>
<place>
<barcode>23230312000042</barcode>
<weight/>
</place>
</barcodes>
<cancel_reason/>
<sms_list>
<sms>
<phone>84950000000</phone>
<sms_status>Статус не распознан</sms_status>
</sms>
</sms_list>
</delivery>
<delivery>
<code>135833991800056753</code>
<delivery_date>2012-03-26</delivery_date>
<deliveries_type>Обычная</deliveries_type>
<from_city>Москва</from_city>
<to_city>Москва</to_city>
<track_number>000000001</track_number>
<time_from>12:33</time_from>
<time_to>18:33</time_to>
<order_id>5555552</order_id>
<metro>Владыкино</metro>
<pickup_place/>
<address>ул. Ленина 33-44</address>
<contact_person>Иван</contact_person>
<phone>23234534545</phone>
<price>1000</price>
<goods_price>0</goods_price>
<additional_info>Доп. инфо new!!!</additional_info>
<site_name>www.site.com</site_name>
<delivery_time>00:00</delivery_time>
<status>Новый</status>
<payment_status/>
<vozvrat_status/>
<comments/>
<errors/>
<partial_ransom>0</partial_ransom>
<delivery_price_for_customer></delivery_price_for_customer>
<return_shipping_documents>1</return_shipping_documents>
<use_from_canceled>0</use_from_canceled>
<number_of_place>1</number_of_place>
<delivery_speed>normal</delivery_speed>
<oplacheno_poluchatelem>0</oplacheno_poluchatelem>
<voozvratov_na_summu>0</voozvratov_na_summu>
<delivery_price>0</delivery_price>
<main_tarif>0</main_tarif>
<payment_for_ds>0</payment_for_ds>
<additional_pack>0</additional_pack>
<additional_weekend>0</additional_weekend>
<additional_packing_list>0</additional_packing_list>
<additional_mkad>0</additional_mkad>
<additional_barcode>0</additional_barcode>
<additional_back_region>0</additional_back_region>
<additional_documentation>0</additional_documentation>
<additional_partial_return>0</additional_partial_return>
<additional_sms>0</additional_sms>
<current_filial>Московский филиал</current_filial>
<reciver_filial>Санкт-Петербург</reciver_filial>
<reciver_filial_code>000000001</reciver_filial_code>
<current_filial_code>000000002</current_filial_code>
<delivery_partner></delivery_partner>
<customer_email>test@test.com<;/customer_email>
<barcodes>
<place> здесь для каждого места указывается штрих код и вес.
<barcode>23230312000043</barcode>
<weight/>
</place>
</barcodes>
<cancel_reason/>
<sms_list>
<sms>
<phone>84950000001</phone>
<sms_status>Сообщение доставлено получателю</sms_status>
</sms>
</sms_list>
</delivery>
</deliveries>
</answer>



вот эту мешанину просто как строковую можно в SQL запихнуть и потом извлечь без искажений ?
...
Рейтинг: 0 / 0
А можно из MySQL сделать простенький кеш ?
    #39802120
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторSQL запихнуть и потом извлечь без искажений

тип text
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / А можно из MySQL сделать простенький кеш ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]