timo-71

Рейтинг
63
Регистрация
19.09.2018

Content-Type application/atom+xml сменить на text/xml или application/xml

1) text/xml charset в заголовке, если его нет будет применен ASCII

3) application/xml если charset не указан, то, если есть в документе будут взят оттуда

Предпочтительней : application/xml

Документ https://www.modnytsi.top/sitemap.xml отдает такие заголовки:

Array
(
[0] => HTTP/1.0 200 OK
[1] => X-Robots-Tag: noindex
[2] => Content-Type: application/atom+xml; charset=UTF-8
[3] => Last-Modified: Thu, 29 Nov 2018 13:52:18 GMT
[4] => Date: Thu, 29 Nov 2018 15:22:37 GMT
[5] => Server: Blogger Render Server 1.0
[6] => Cache-Control: private
[7] => X-XSS-Protection: 1; mode=block
[8] => X-Frame-Options: SAMEORIGIN
[9] => Accept-Ranges: none
[10] => Vary: Accept-Encoding
)

Не заметил X-Robots-Tag: noindex , правда как к тому относится ПС точно не знаю, но думаю он тут не нужен

burunduk:
это как раз решается достаточно просто и к сайту не имеет отношения

Это не было проблемой для сайта, у меня не типичный подход к категориям;)

А просто пример хрени, которая приходит от 1с. Посыл был в том, что данные всегда (не видел иного) соответствуют тому что у них внутри 1с и они корректны для разбора, если не было проблем с передачей (память, время и пр лимит). Поэтому, скорее не

Но сначала нужно от 1С добиться корректной работы

а посмотреть на скрипт сайта, мож там тупо 50 метровый хмл сначала считали файл_гет_контентс в переменную, потом обошли и массив из него сделали (уже грубо прилично больше чем 50+50 ) который потом попытались обойти и скуел запрос слепить, который еще 50сильно+ метров. А памяти скрипту пхп.ини дал, ну ладно 128м😂

burunduk:
а на фига вам там 1с???
вам для начала с архитектурой сайта разобраться надо

1c для многих основа бизнеса, а сайт лишь один из каналов привлечения клиентов. Как не прискорбно, не наоборот😂

sij7:
Но сначала нужно от 1С добиться корректной работы

1с, вероятно, корректно работает, в рамках ваших ее изменений. Скорее в модуле обмена что то не так.

Зы: Я не спец по 1с, но повидал разные offers.xml и import.xml, та еще бяка:( при этом, как ни странно, адекватно отражают состояние базы 1с

<?xml version="1.0" encoding="UTF-8"?>

<КоммерческаяИнформация ВерсияСхемы="2.05" ДатаФормирования="2018-10-09T09:42:43">
<Классификатор>

Не видел, что бы оно корректно не отдавалось. Приходит, синтаксически нормально разбирается. Но внутри полный бизнес

Что часто было:

<Группы>

<Группа>

Категории товаров. На пальцах: группа телефоны, неожиданно оказывалась в автомобилях, а мерседес в матрасах.

все совпадения случайны По факту же, это оказывалось равным текущему состоянию их базы. В 1с ровно так же. Кто то, почему то перенес телефоны в автомобили и т.д.😂

ЗыЗы: 1сники те еще *, с ними ухо востро. Как и сайтостроители🍿

M25:
я бы не городил ,а взял бы api (да ,платно, но недорого) вроде этого или этого и file_get_contents

Хозяин-барин:)

Но, гибкость и независимость и трудозатраты в 2 команды


pip install pymorphy2
pip install -U pymorphy2-dicts-ru
+ немного строк кода, намекают городить😂
Dram:
в поле name - "Детская библиотека №25"
в поле name-morfer - "детской библиотеке №25"

Похожая задача была, касательно лемматизации, склонения слов и прочим

русским стеммингом

Выбирал м/у mystem и pymorphy2

Остановился на pymorphy2, несмотря на то,что 1 раз увидел Python. Гибче гораздо, данные можно отдавать в любом нужном варианте☝

Затраты:

  • 4 часа времени
  • 100500 запросов гугл*


#!/usr/bin/env python36
# -*- coding: utf-8 -*-
# Requires Python 3+
# Pymorphy2 support for jcms

import sys, pymorphy2, json, base64, locale, codecs

#locale, codecs for php exec ( fix UnicodeEncodeError: 'ascii' codec can't encode characters in position 10-19: ordinal not in range(128))

def inflect(lsts, mth):
els = lsts.split()
ww = []
for tok in els:
if len( tok ) > 2:
ww.append( morph.parse(tok)[0].inflect({mth}).word )
return ww

locale.setlocale(locale.LC_ALL, "ru_RU.UTF-8")
if "detach" in dir(sys.stdout):
sys.stdout = codecs.getwriter('utf-8')(sys.stdout.detach())
sys.stdin = codecs.getwriter('utf-8')(sys.stdin.detach())

if __name__ == "__main__":

q = ''
m = ''

if len (sys.argv) > 2:
m = sys.argv[1]
q = sys.argv[2]
else:
print('Wrong parameters')
exit(1)

if m in [ "nomn", "gent", "datv", "accs",
"ablt", "loct", "voct", "gen2", "loc2" ]:
morph = pymorphy2.MorphAnalyzer()
infl = inflect(q, m)
print( infl )
else:
print('Wrong parameter to inflect')

exit(3)

(прошу знатоков python строго не судить за код, повторюсь, 1 блин, но идея понятна)

В итоге

$ python36 /home/web/py/morph/inflect gent "Детская библиотека"

['детской', 'библиотеки']

$ python36 /home/web/py/morph/inflect loct "Детская библиотека"

['детской', 'библиотеке']

* - когда надо было импортировать результат в php


$arg = [ '-nomn',
'Уфу,Магадану,Казани,Санкт Петербурге,Москвы,Самаре,Нижнем Новгороде,барнаулу,новый уренгой,пельсисков'
];
echo print_rh($arg, 'Исходные данные для inflect');
$lemm = 'python36 /home/web/py/morph/pymorph.py ' . base64_encode( json_encode( $arg ) );
$output = exec($lemm, $r, $rv);
echo print_rh( json_decode($output), 'lemma ' ), print_rh(\logger::logit( 'End pymorph', 'ok', __METHOD__ ), 'End');
/* Result
Исходные данные для inflect

Array
(
[0] => -nomn
[1] => Уфу,Магадану,Казани,Санкт Петербурге,Москвы,Самарой,Нижнем Новгороде,барнаулу,новый уренгой,пельсисков
)

lemma

stdClass Object
(
[pymorphy] => Array
(
[0] => уфа
[1] => магадан
[2] => казань
[3] => санкт петербург
[4] => москва
[5] => самара
[6] => нижний новгород
[7] => барнаул
[8] => новый уренгой
[9] => пельсиски
)

)

End
Array
(
[msg] => End pymorph
[status] => ok
[point] => Jcms\Intro\User::geomakenew
[ecode] => 0
[afterstart] => 65.81 ms
[afprevious] => 52.45 ms
[details] =>
[mem] => 0.48/2.00, mb
)

*/

Рarse error победили. следующие ошибки:)


$words = htmlspecialchars($words);

зачем? тем более потом


$arraywords = explode(" ", $words);
foreach($arraywords as $key => $value) {
.....
$query_search .= '`id` LIKE "%'.$value.'%" OR `name` LIKE "%'.$value.'%"';
.....
}

Может просто вырезать все, что не похоже на буквы и цифры, потом перебрать и, может быть, стеммером обработать, а может нет:) Чтобы получить в итоге:

SELECT * FROM students WHERE `id` LIKE "%пет%" OR `name` LIKE "%пет%";

вместо

SELECT * FROM students WHERE `id` LIKE "%&quote;петя&quote;%" OR `name` LIKE "%&quote;петя&quote;%";

для запроса петя в кавычках

$words = '"петя"';
Dmitriy_2014:
Насколько опасно так делать? Может ли это привести к необратимым последствиям?

К необратимым, скорее нет. Но, могут быть косяки когда много репозитариев и в разных из них пакеты одинаковых приложений разных версий. Ключ --enablerepo тут помогает, например php 7.2 будет корректен если поставлен и обновляется из одного источника:

yum --enablerepo=remi-php72
Dmitriy_2014:
Наверное, не судьба мне быть администратором Linux :)
yum update phpmyadmin ничего не обновило написав нечто вроде:
Package(s) phpmyadmin available, but not installed.
No Packages marked for Update

Вероятно, ставился не при помощи yum:) Для установки: yum install phpmyadmin , но это и хорошо что обновить решили а не ставить. Возможно, конфликт случился бы, не знаю. Кстати, хорошая шпаргалка по желтому установщику.

Dmitriy_2014:

Удаление всех файлов в директории /usr/share/phpmyadmin и копирование туда новой версии привело лишь к ошибке ERROR 500.
Хорошо, что хоть назад все вернул, скопировав обратно старые файлы.

Поспешили, обычно в /var/log/httpd|nginx|apache2|или что там у вас/error*log можно найти почему 500☝ Эти знания и сейчас там лежат, нужно только найти и посмотреть.

<Ванга>: Вероятно, владелец и права старого каталога phpmyadmin и нового не были одинаковыми</Ванга>

Но, хорошо, что хорошо кончается😂

Dmitriy_2014:

Могу ли я сохранить как бэкап директорию /usr/share/phpmyadmin, чтобы потом если что восстановить её?

Да. Только, phpmyadmin может использовать и другие места /etc/phpMyAdmin , /var/lib/phpMyAdmin для каких то файликов...

Dmitriy_2014:

И действительно ли можно просто зайти на официальный сайт phpMyAdmin скачать архив с последней версией программы и разархивировать с заменой файлов в нужную директорию, и она как бы обновиться и нужно ли в этом случае будет что-то настраивать или оно и так работать будет, как и раньше?

Да. Там обычные php скрипты. Но, нюансы конфигурации + политика безопасности. Вот что оф.сайт говорит по поводу Upgrading

The complete upgrade can be performed in few simple steps:
Download the latest phpMyAdmin version from <https://www.phpmyadmin.net/downloads/>.
Rename existing phpMyAdmin folder (for example to phpmyadmin-old).
Unpack freshly donwloaded phpMyAdmin to desired location (for example phpmyadmin).
Copy config.inc.php` from old location (phpmyadmin-old) to new one (phpmyadmin).
Test that everything works properly.
Remove backup of previous version (phpmyadmin-old).
.....
Dmitriy_2014:

Если что-то пойдет не так смогу ли я заменить старую архивную директорию и вернуть все, как и было раньше?

Да, с учетом нюансов...

Зы: Ради интереса: что такого практически ценного есть в phpMyAdmin 4.8.3 а нет в

Установленные пакеты
Название: phpMyAdmin
Архитектура: noarch
Версия: 4.4.15.10
Выпуск: 3.el7
Объем: 24 M
Источник: installed
Из источника: epel
Вероятнее всего последнюю не положили в репозиторий по тем или иным причинам: несовместимость новой версии с зависимостями / лень.

Вероятно последнее, sudo yum deplist phpmyadmin - только php и webserver, а эти вещи в CentOS, в отличии от многого другого в репо появляются шустро..

По идее не должно быть проблем, yum такой командой обновит только phpmyadmin и может быть зависимости .

Соответственно, не тронет это

server {
listen 80;
# phpmyadmin
server_name pma.pma;
charset utf-8;
root /usr/share/phpMyAdmin;
....

или настройки другого веб сервера, если у вас не nginx+php-fpm

Вот не помню, при установке - точно, а может и при обновлении тоже, были ошибки pma связанные с правами на некоторые папки/файлы. В моем случае (машина для локальной разработки) pma - root, а php - от nginx . Но это легко решается.

Плюс, всегда можно, если что то пошло не так

sudo yum history
sudo yum history undo <ID>
Всего: 541