Назад | Перейти на главную страницу

PHP жрет много памяти на IIS

Я только что перевел один сайт с Linux на Windows и получаю странные сообщения о фатальных ошибках. Мой Linux PHP имел ограничение памяти 256 МБ и никогда не имел ни одной фатальной ошибки «нехватки памяти».

Теперь в IIS у меня такой же лимит памяти, но я получаю слишком много

PHP Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 32508940 bytes) in C:\...\functions.php on line 0

Я попытался увеличить (400 МБ), чтобы посмотреть, что произойдет, и вот что у меня получилось

PHP Fatal error:  Allowed memory size of 419430400 bytes exhausted (tried to allocate 65013862 bytes) in C:\....\dbfunctions.php on line 1073741824

Странно, это то же приложение, те же настройки ограничения памяти .. Также странно то, что во второй ошибке написано «на строке 1073741824», но ничего себе, в этом файле 500 строк. Это проблема Windows / IIS / PHP?

Моя конфигурация: IIS 8.0, PHP 5.3.28, PHP-обработчик php-cgi.exe

Расширение кэша Windows для PHP

Кажется, существует множество проблем, связанных с расширением кэша Windows для PHP, которое устанавливает жесткие ограничения памяти для php.

Статья Microsoft IIS.net

Существуют примеры и сообщения в блогах, в которых удаление wincache решает проблему, но это может отрицательно сказаться на производительности сайта.

Пример похожих проблем, связанных с wincache

Управление памятью PHP в IIS

  • php.ini - находится в корневой папке. Отредактируйте в TextPad и измените значение momory_limit. если 4M недостаточно до 8M и т. д.

  • В admin.php (если ваша ошибка здесь) добавьте строку ограничения памяти после ini_set 'memory_limit', '12M' если вы хотите добавить 12 МБ памяти

  • Вы можете добавить строку в .htaccess: php_value memory_limit 32M

  • wp-config.php может управлять памятью. Вы помещаете строку, которая выглядит так

    define('WP_MEMORY_LIMIT', '32M');

Информация взята с phpbb.com и technet.microsoft.com