Проблемы в php simplexml_load_string

Solmyr
На сайте с 10.09.2007
Offline
501
1215

При выполнении функции simplexml_load_string с небольшим куском валидного XML кода, апач иногда вылетает, оставляя в errorlog вот такую запись:


[Sun Jul 10 09:58:36.254437 2016] [core:notice] [pid 1981] AH00052: child pid 8758 exit signal Segmentation fault (11)

Повторное выполнение с тем же аргументом потом проходит успешно. Вероятно вылет зависит от предыстории использования simplexml_load_string которое вероятно засирает память или что-то там еще. Однако важно отметить что с некоторыми фрагментам и несколько десятков тысяч последовательных запусков simplexml_load_string не приводят к вылету, а с некоторыми вылет происходит через 10-100 запусков. Разницы между теми и теми фрагментами я на глаз не вижу. И то и другое - небольшие (2-4к) валидные фрагменты XML кода.

Вопрос, собстенно что делать.

1) Как поменять какие-то настройки сервера чтобы simplexml_load_string работало стабильнее?

2) Чем заменить, для парсинга фрагментов XML-кода?

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#1

апатч падает от php кода? Какая версия apache? Может обновить надо, а то это баг какой-то.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
Mik Foxi
На сайте с 02.03.2011
Offline
1076
#2

2) если считаете что дело точно в simplexml_load_string - замените на парсинг регулярками. Они надежнее, когда есть вероятность что xml невалидный, и работают быстрее.

Антибот, антиспам, веб файрвол, защита от накрутки поведенческих: https://antibot.cloud/ + партнерка, до 40$ с продажи.
L
На сайте с 10.02.2015
Online
221
#3

Может php обновить? Какая версия?

И настроить nginx + php-fpm

Solmyr
На сайте с 10.09.2007
Offline
501
#4

PHP Version => 5.6.20-0+deb8u1

libxml Version => 2.9.1

PCRE Library Version => 8.35 2014-04-04

Ошибка точно в simplexml_load_string (не в PCRE функциях). Но кажется помогло уменьшение параметра pcre.recursion_limit пока точно не уверен нужно больше тестов.

[umka]
На сайте с 25.05.2008
Offline
456
#5

Если вылетает апач, то пхп работает, по всей видимости, как mod_php?

Попробуйте на время переключить его в другой режим (fastcgi или fpm).

А проблема, скорее всего, связана с выделением памяти. Если остаётся core-файл, можно посмотреть дебагером, что же там на самом деле происходит.

Лог в помощь!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий