Open plyaskin opened 3 years ago
Стоит обратиться к документации api, https://yandex.ru/dev/disk/api/reference/move.html
Непустая папка может перемещаться в течение произвольного времени
Приложения должны самостоятельно следить за статусами запрошенных операций
Проверяйте статус, как сказано в документации о произвольном времени выполнения
if ($operation->getStatus() == Operation::SUCCESS) { ... }
или поменяйте логику приложения
Добавил в код echo $deleteFiles->getStatus();
foreach ($projectOldFolder->items as $item) { //remove all files in the folder with Category name
if ($item['type'] == 'file' && str_contains($item['file'],$projectOldCategory)) {
$deleteFiles = $item->delete();
echo $deleteFiles->getStatus();
}
}
Вообще ничего не возращает и каждый раз выпадает с ошибкой 500, либо, если удалять нечего, то просто пустой экран без ошибки. echo $deleteFiles->getStatus();
ставил везде, где только можно, и в цикле, и после.
Это уже финальный вариант, пробовал как вы предложили с if, там так же безрезультатно (с getStatusCode
тоже самое). Что не так?
Ошибка 500? так включите вывод ошибок и используйте отладку.
Метод delete может возвращать как boolean, так и объект Operation. Если над ресурсом выполняется операция, то он "заблокирован" и api не сможет его переместить, например. Это не ошибка библиотеки, изучайте документацию. В документации описано, время выполнения может быть произвольным. И кстати, библиотека выбрасывает исключения когда яндекс диск возвращает ошибку, вам стоит их обрабатывать в try/catch
При переименовании/перемещении (move) скрипт перестаёт удалять/копировать, как бы не менял последовательности. Видимо, потому, что процедуры занимают больше времени, чем отработка скрипта и он уходит к следующей функции, как только получил ответ "true".
Возвращаемые значения TRUE или FALSE, а также Arhitector\Yandex\Disk\Operation в случае длительного копирования.
Возможно, решение в последнем, но как его использовать, ума не приложу, есть мысли?