|
А можно из MySQL сделать простенький кеш ?
|
|||
---|---|---|---|
#18+
С некоторого внешнего сервера через 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 и какой командой запихнуть туда объект целиком не заморачиваясь разбором его структуры (ну и потом также извлекать) ? Такое вообще возможно ? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 12:10 |
|
А можно из MySQL сделать простенький кеш ?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 12:59 |
|
А можно из MySQL сделать простенький кеш ?
|
|||
---|---|---|---|
#18+
ScareCrow https://dev.mysql.com/doc/refman/8.0/en/json.html оно и без этого работает храним подобным образом клиентские настройки экономических графиков, разрезе по каждому инструменту, ~30 гигабайт данных, но чтение и запись всего json целиком ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 13:16 |
|
А можно из MySQL сделать простенький кеш ?
|
|||
---|---|---|---|
#18+
ScareCrow https://dev.mysql.com/doc/refman/8.0/en/json.html Там по ссылке как раз как работать с эффективно со структурами JSON в SQL в смысле искать, извлекать или менять отдельные элементы JSON внутри SQL Мне то это ничего не надо, мне нужно сохранить нечто условно в бинарном виде и потом его же извлечь, что там внутри JSON, не JSON, какая структура, я даже знать не хочу, просто положил в коробку, извлек обратно. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 13:18 |
|
А можно из MySQL сделать простенький кеш ?
|
|||
---|---|---|---|
#18+
Т.е. что то типа INSERT INTO delivery(city, delivery) VALUES('Moscow', $delivery_list_request); будет работать ? где $delivery_list_request это какой то непонятный объект неважно что содержащий (толи JSON, то ли массив массивов) какой типа для поля надо указать ? как то обработать содержимое $delivery_list_request надо перед этим ? Оно же может содержать что угодно и какие угодно символы, в том числе не совсем пригодные для хранения в MySQL ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 13:24 |
|
А можно из MySQL сделать простенький кеш ?
|
|||
---|---|---|---|
#18+
сорри, глянул внутрь, про 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 запихнуть и потом извлечь без искажений ? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 13:34 |
|
|
start [/forum/topic.php?fid=47&fpage=36&tid=1829188]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 150ms |
0 / 0 |