Я называю этот сайт " Heritage», потому что на нем установлена какая-то устаревшая версия 4 версии плагина «WP Bakery / Visual Composer», которую следует обновить до версии 7. Но кто-то не хочет платить 75 долларов за безопасный сайт. Итак, насколько мне известно, ошибки отладки возникают из-за скрипучего старого PHP-кода, который устарел и находится на грани «исчезновения».
Поэтому я пишу PHP-страницу под другим именем. URL на данный момент, для тестирования, на Hostinger, я скопировал файлы сайта и базу данных и разместил сайт там.
Проблема:
На этом сайте у меня исчерпан лимит памяти, но мои проверки использования памяти показывают, что используется только 9–13 МБ памяти, а ограничение активной памяти на сайте составляет 512 МБ.Вопрос:
Какую простую вещь PHP (или компьютера) я, надеюсь, здесь не понимаю?
Я умею читать, верно? Это байты против мегабайтов в выводе на связанном изображении ниже? Я сравниваю яблоки с яблоками?
На выходе я вижу, например, 12604480 байт, это 12,6 МБ, верно? По сравнению с 512 МБ я не понимаю, в чем проблема.
А если это бесконечный цикл, я этого не вижу.
Спасибо за любую помощь.
Полный сценарий можно найти на Pastebin.
Подробности:
У меня это есть вначале, после вызова get_header():
Код: Выделить всё
echo 'Memory limit: ' . ini_get('memory_limit');
Код: Выделить всё
echo("This is the memory usage during the input loop");
echo("Memory used: " . memory_get_usage() . " bytes");
wp_reset_postdata();
echo("This is the memory usage after resetting post data in the loop");
echo("Memory used: " . memory_get_usage() . " bytes");
Изображение, показывающее текущий лимит памяти и мое использование.
Изображение, показывающее увеличение использования памяти до прекращения печати.
Вот проблемный участок кода, когда Я вырезал этот раздел и просто напечатал там привет, всё работает нормально:
Код: Выделить всё
$args = [
'post_type' => 'attorney',
'posts_per_page' => -1, // Get all advisor posts, about 30 text records
];
$advisor_query = new WP_Query($args);
while ($advisor_query->have_posts()):
// $advisor_query->the_post();
// get the designation to be able to lower case it
$designation = get_post_meta(get_the_id(), 'attorney_designation', true);
$designation_lower = strtolower(get_post_meta(get_the_id(), 'attorney_designation', true));
// Get the required fields from the attorney/advisor post
$advisor_record = [
"advisor_name" => get_the_title(),
"designation" => $designation,
"designation_lower" => $designation_lower,
"advisor_description" => get_the_content(),
"advisor_image_link" => get_post_meta(get_the_id(), 'attorney_detailed_page_image', true),
];
// Categorize employees based on designation
if (str_contains($designation_lower, 'shareholder')) {
$employees['shareholders'][] = $advisor_record;
} elseif (str_contains($designation_lower, 'cpa') || str_contains($designation_lower, 'accountant') || str_contains($designation_lower, 'tax advisor')) {
$employees['cpas'][] = $advisor_record;
} else {
$employees['admin'][] = $advisor_record;
}
wp_reset_postdata(); // only testing this, it breaks without this
// was trying to unload the post from mem once I process it
// and move on to the next
endwhile;
Я поработаю над созданием лучшего MVCE здесь утром.
Я просто подумал, что это может быть очевидная проблема среды PHP, о которой я не знаю. У меня довольно приличный опыт работы с программным обеспечением в области компьютерных наук, но не в промышленности, поэтому я, вероятно, совершаю очень глупую ошибку.
Как бы то ни было, записей всего около 30, это в записях сотрудников всего около 10 текстовых полей, одно из которых является ссылкой. Я предполагаю, что работаю только со ссылкой, а не сохраняю изображения в памяти напрямую. Если бы это было так, это могло бы быть проблемой.
Спасибо за любые отзывы о моем PHP-коде, я работаю на Python и других специалистах, но, очевидно, не являюсь интерфейсным разработчиком.< /p>
Провел это исследование и многое другое:
Привет, посмотрел: Ошибка PHP из-за нехватки памяти, хотя предел_памяти не достигнут -- Я тестирую этот сайт разработки на виртуальном хостинге (это не локально длинная история). Я не думаю, что смогу контролировать ограничение памяти Apache2, но сомневаюсь, что это будет проблемой. Я пытаюсь загрузить здесь только около 30 записей.
Также: https://stackoverflow.com/a/55566634/3255525 - попробовал обновить wp mem в wp-config. php до 512 м, не повезло.
И: Неустранимая ошибка: недостаточно памяти, но у меня достаточно памяти (PHP), для исправления которой в основном требуется доступ к конфигурации Apache, но Я использую общий хостинг Hostinger для тестирования/создания этого сайта.
И: https://stackoverflow.com/a/46652352/3255525 - вопрос немного сбивает с толку, и Кажется, что ответ пытается исправить проблему, а не исправить ее. Возможно, я мог бы изучить это еще, я посплю над этим.
Подробнее здесь: https://stackoverflow.com/questions/790 ... -below-mem