Olá,
estamos usando WP Media Folder v4.2.6.
Pesquisando o motivo da falha do nosso site de produção hoje, nos deparamos com as seguintes linhas de código PHP em 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);
}
}
}
retornar $tree;
}
A mensagem de erro relatada no log do aplicativo foi:
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
Depois de alterar a primeira linha da função acima para "if ($limit > 1500)", o site começou a funcionar novamente.
Você poderia explicar o motivo do limite de 1.000 chamadas recursivas e como ele pode ser evitado ou aumentado da melhor maneira possível (por exemplo, sem alterações personalizadas diretamente no código do plugin)?
Atenciosamente,
vipteam
estamos usando WP Media Folder v4.2.6.
Pesquisando o motivo da falha do nosso site de produção hoje, nos deparamos com as seguintes linhas de código PHP em 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);
}
}
}
retornar $tree;
}
A mensagem de erro relatada no log do aplicativo foi:
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:
Depois de alterar a primeira linha da função acima para "if ($limit > 1500)", o site começou a funcionar novamente.
Você poderia explicar o motivo do limite de 1.000 chamadas recursivas e como ele pode ser evitado ou aumentado da melhor maneira possível (por exemplo, sem alterações personalizadas diretamente no código do plugin)?
Atenciosamente,
vipteam
- Página :
- 1
Ainda não há respostas para esta postagem.
