- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
wp_insert_post вызывает Fatal error</b>: Allowed memory size of 67108864 bytes exhausted. В чем может быть проблема?
В теме ниже была подобная ошибка. Посмотрите: /ru/forum/470325
В теме ниже была подобная ошибка. Посмотрите: /ru/forum/470325
Нет это не то. Сейчас подробнее опишу:
значит есть плагин для вордпресса, в общих словах - плагин пасрер, парсит целые сайты. За счет этого (если сайт большой) со временем накапливается значительный объем информации об уже обработанных и еще не обработанных страницах. Для запуска php-парсера из админки плагина используется аякс. Между клиентским скриптом и аякс приложением регулярно передаются данные (в частности об обработанных и необработанных страницах).
Сначала проблема была в том, что когда данные становились слишком большими, то аякс их терял (ведь есть максимальный допустимый предел передачи методом POST данных). Потом я ввел возможность сохранения надмерной порции промежуточных данных в файл И эта проблема отпала. Но начал вылазить другой баг:
В плагине используется функция wp_insert_post для вставки нового поста. Собственно говоря она вызывается после обработки каждой страницы парсенного сайта (точнее почти каждой, но это сейчас не суть). Так вот wp_insert_post на свой N-ый вызов теперь вызывает фатальную ошибку:
Fatal error: Allowed memory size of 73400320 bytes exhausted (tried to allocate 1966080 bytes) in
/home2/…/wp-db.php on line 589
причем, если wp_insert_post не вызывается (то есть я его просто закоментировал), то ничего не происходит, и обработка продолжается
Теперь еще один важный момент: я попытался запустить старую версию плагина (которая была работоспособной несколько дней назад) и она вызвала ту же ошибку.
Теперь в связи с этим еще такой момент: сегодня я на хосте тестировал плагин на работу с функциями считывания и записи файлов большого размера и они у меня тоже вызывали подобные ошибки (в частности функция считывания), пока я не сделал считывание по кусочкам
plamar (13:01:34 10/03/2010)
$fp = fopen($filename, "r+");
$contents = '';
while (!feof($fp))
{
$contents .= fread($fp, 8192);
}
fclose($fp);
так вот у меня такие мысли по этому поводу: может быть на хосте каким-то образом где-то зависла память, которая выделялась для моего приложения?
ОБРАТИТЕ ВНИМАНИЕ - очень вряд ли, что ошибка в скрипте, ведь старая версия (которая на тех же входных данных хорошо работала, сейчас выдает такую же ошибку).
plamar добавил 10.03.2010 в 18:01
Вот нашел подобную проблему с wp_insert_post - http://wordpress.org/support/topic/185342. Но приведенное там решение не помогает вроде
Какой размер файла пытаетесь открыть?
Какой размер файла пытаетесь открыть?
оговорюсь, файл вообще не причем. Я даже отключил возможность открывать файлы сейчас. Проблема в wp_insert_post. Без нее - все работает.
plamar добавил 10.03.2010 в 18:22
Там какая то проблема с тем, что запрос сначала кешируется, а потом выполняется, из за этого всплеск использования памяти.
оговорюсь, файл вообще не причем. Я даже отключил возможность открывать файлы сейчас. Проблема в wp_insert_post. Без нее - все работает.
plamar добавил 10.03.2010 в 18:22
Там какая то проблема с тем, что запрос сначала кешируется, а потом выполняется, из за этого всплеск использования памяти.
Извиняюсь. Не читал Ваши посты.
Определил очень интересную закономерность: ошибка вылазит только если я ставлю время публикации постов в будущем (то есть планирую публикацию). И все работает, если не делать запланированных постов
plamar добавил 10.03.2010 в 21:54
В общем (если кому интересно), проблема (скачок потребления памяти) локализована в данной функции:
plamar добавил 11.03.2010 в 08:35
В общем проблема действительно в этой функции (причем именно тогда, когда планируем будущий пост). Сейчас покажу:
И после этого получаем такой результата:
18747184-futureMET0
24676648-futureMET1
24676648-futureMET2
38540144-futureMET3
Теперь вопрос к спецам по вордпрессу: как переопределить эту функцию, чтобы она могла правильно запланировать пост, но не вызывала эти функции по умолчанию?