k-shym / URFAClient

URFAClient PHP (api.xml)
GNU General Public License v3.0
27 stars 9 forks source link

Бесконечная рекурсия #24

Closed MuVO closed 6 years ago

MuVO commented 6 years ago

Пытаюсь выполнить поиск через rpcf_search_users_new

пример:

            ->rpcf_search_users_new([
                'select_type' => 0,
                'patterns_count' => [
                    [
                        'what' => 2,
                        'criteria_id' => 3,
                        'pattern' => 'test1',
                    ]
                ],
            ]);

скрипт при попытке выполнения выпадает в OOM

путём дебага и траблшутинга выяснил, что фейлится вот в этом месте

Признаюсь честно: я логикой так и не допёр, что там должно происходить, но в моём случае в $count обнаруживается не целое число, а массив, и функция вызывает сама себя, передавая ту же ноду, с которой работала.

такая фигня происходит, похоже, потому что внутри for вложен ещё один for (в api.xml)

захардкодил костыль

                    if (!is_numeric($count)) {
                        error_log(print_r($count, true));
                        break;
                    }

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

в общем, взываю к помощи @k-shym

спасибо

k-shym commented 6 years ago

Напутал с приоритетами операторов, конечно в $count не должен был попасть массив. Спасибо.

Проблема возникла, из-за второго массива for, у которого нет счетчика.