Привет,
мы используем WP Media Folder v4.2.6.
Исследуя причину сбоя нашего рабочего сайта сегодня, мы наткнулись на следующие строки PHP-кода в class-media-folder.php:
public function generatePageTree($datas, $parent = 0, $dynamic = 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]->dynamic = $dynamic;
$tree[] = $datas[$i];
$t = $this->generatePageTree($datas, $datas[$i]->term_id, $dynamic_times + 1, $limit++);
$tree = array_merge($tree, $t);
}
}
}
return $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, given null, 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 v4.2.6.
Исследуя причину сбоя нашего рабочего сайта сегодня, мы наткнулись на следующие строки PHP-кода в class-media-folder.php:
public function generatePageTree($datas, $parent = 0, $dynamic = 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]->dynamic = $dynamic;
$tree[] = $datas[$i];
$t = $this->generatePageTree($datas, $datas[$i]->term_id, $dynamic_times + 1, $limit++);
$tree = array_merge($tree, $t);
}
}
}
return $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
На этот пост пока нет ответов.
