Привіт,
ми використовуємо плагін WP Media Folder
Досліджуючи причину збою нашого продакшн-сайту сьогодні, ми натрапили на такі рядки PHP-коду в class-media-folder.php:
public function generatePageTree($datas, $parent = 0, $depth = 0, $limit = 0) {
if ($limit > 1000)
return '';
$tree = array();
for ($i = 0, $ni = count($datas); $i < $ni; $i++) {
if (!empty($datas[$i])) {
if ($datas[$i]->parent == $parent) {
$datas[$i]->name = $datas[$i]->name;
$datas[$i]->depth = $depth;
$tree[] = $datas[$i];
$t = $this->generatePageTree($datas, $datas[$i]->term_id, $depth + 1, $limit++);
$tree = array_merge($tree, $t);
}
}
}
повернути $tree;
}
Повідомлення про помилку в журналі програми було таким:
PHP Warning: array_merge(): Argument #2 is not an array in /var/www/html/wp-content/plugins/wp-media-folder/class/class-media-folder.php on line 1310
PHP Fatal error: Uncaught TypeError: Argument 1 passed to Wp_Media_Folder:
arent_sort() must be of the type array, null given, called in /var/www/html/wp-content/plugins/wp-media-folder/class/class-media-folder.php on line 470 and defined in /var/www/html/wp-content/plugins/wp-media-folder/class/class-media-folder.php:1327
Після зміни першого рядка функції вище на "if ($limit > 1500)" веб-сайт знову почав працювати.
Чи не могли б ви пояснити, чому існує обмеження в 1000 рекурсивних викликів, і як його можна уникнути або збільшити найкращим чином (наприклад, без внесення змін безпосередньо в код плагіна)?
З повагою,
vipteam
ми використовуємо плагін WP Media Folder
Досліджуючи причину збою нашого продакшн-сайту сьогодні, ми натрапили на такі рядки PHP-коду в class-media-folder.php:
public function generatePageTree($datas, $parent = 0, $depth = 0, $limit = 0) {
if ($limit > 1000)
return '';
$tree = array();
for ($i = 0, $ni = count($datas); $i < $ni; $i++) {
if (!empty($datas[$i])) {
if ($datas[$i]->parent == $parent) {
$datas[$i]->name = $datas[$i]->name;
$datas[$i]->depth = $depth;
$tree[] = $datas[$i];
$t = $this->generatePageTree($datas, $datas[$i]->term_id, $depth + 1, $limit++);
$tree = array_merge($tree, $t);
}
}
}
повернути $tree;
}
Повідомлення про помилку в журналі програми було таким:
PHP Warning: array_merge(): Argument #2 is not an array in /var/www/html/wp-content/plugins/wp-media-folder/class/class-media-folder.php on line 1310
PHP Fatal error: Uncaught TypeError: Argument 1 passed to Wp_Media_Folder:
Після зміни першого рядка функції вище на "if ($limit > 1500)" веб-сайт знову почав працювати.
Чи не могли б ви пояснити, чому існує обмеження в 1000 рекурсивних викликів, і як його можна уникнути або збільшити найкращим чином (наприклад, без внесення змін безпосередньо в код плагіна)?
З повагою,
vipteam
- сторінка:
- 1
На цю публікацію ще немає відповідей.
