Разрешенный размер памяти 33554432 байт исчерпан (пытался выделить 9967617 байт) в … \ wp-includes \ functions.php

Когда сценарий истекает, и вы ничего не можете с этим поделать (потому что он работает на блочном общем хостинговом ресурсе, где у вас есть 0 контроль над тайм-аутами сценария), можете ли вы запустить останов реестра или что-то в этом роде?

Вы можете спросить, что на самом деле имеет этот вопрос с wordpress …

Ну, это вроде как.

в моей процедуре миграции я обрабатываю стопку записей за 10 000 и выполняю сильную сильную обработку. Я должен сделать выбор, потому что мне все нужно. Страница со временем заканчивается. В следующий раз, когда я запустил ту же страницу, я получил размер разрешенной памяти из 33554432 байт, израсходованных (пытался выделить 9967617 байт) в … \ wp-includes \ functions.php в строке 3335

Никаких подключаемых модулей не было, никаких настроек не было. Я могу генерировать эту ошибку, когда захочу. Поэтому не говорите, проверяйте свои последние действия и плагины и все, что pls. Это версия ванили, которую вы получаете после установки 5 минут.

Ну, мой первый инстинкт состоял в том, чтобы запустить mysql_free_result над этим RS!

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

Solutions Collecting From Web of "Разрешенный размер памяти 33554432 байт исчерпан (пытался выделить 9967617 байт) в … \ wp-includes \ functions.php"

Я столкнулся с той же проблемой, когда писал свой резервный плагин. Ошибка появляется, когда вы извлекаете все данные из db, вызывая $wpdb->get_results( ... ) . И, как вы можете предположить, он извлекает все данные в память, выделенную для php. Лучшим подходом является использование функций mysql_* для извлечения строки один за другим и хранения данных во временный файл. Такой подход значительно сократит использование памяти.

Я бы рекомендовал вам сделать это примерно так:

 $result = @mysql_query( sprintf( 'SELECT * FROM `%s`.`my_big_table`', $wpdb->dbname ), $wpdb->dbh ); if ( $result ) { while ( ( $row = @mysql_fetch_array( $result, MYSQL_NUM ) ) ) { // save each row to temp file fwrite( $handle, prepare_row_to_save_into_file( $row ) ); } @mysql_free_result( $result ); }