From a6ba59eac091949d6fd598d34f056ce874b77e13 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Wed, 9 Feb 2022 21:04:18 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=A4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/Api/FileController.php | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/app/Http/Controllers/Api/FileController.php b/app/Http/Controllers/Api/FileController.php index 166731f2..05ee1337 100755 --- a/app/Http/Controllers/Api/FileController.php +++ b/app/Http/Controllers/Api/FileController.php @@ -564,10 +564,11 @@ class FileController extends AbstractController } // $dirs = explode("/", $webkitRelativePath); - AbstractModel::transaction(function() use ($user, $userid, $dirs, &$pid) { - while (count($dirs) > 1) { - $dirName = array_shift($dirs); - if ($dirName) { + while (count($dirs) > 1) { + $dirName = array_shift($dirs); + if ($dirName) { + $pushMsg = []; + AbstractModel::transaction(function () use ($dirName, $user, $userid, &$pid, &$pushMsg) { $dirRow = File::wherePid($pid)->whereType('folder')->whereName($dirName)->lockForUpdate()->first(); if (empty($dirRow)) { $dirRow = File::createInstance([ @@ -578,17 +579,19 @@ class FileController extends AbstractController 'created_id' => $user->userid, ]); if ($dirRow->save()) { - $tmpRow = File::find($dirRow->id); - $tmpRow->pushMsg('add', $tmpRow); + $pushMsg[] = File::find($dirRow->id); } } if (empty($dirRow)) { throw new ApiException('创建文件夹失败'); } $pid = $dirRow->id; + }); + foreach ($pushMsg as $tmpRow) { + $tmpRow->pushMsg('add', $tmpRow); } } - }); + } // $path = 'uploads/file/' . date("Ym") . '/u' . $user->userid . '/'; $data = Base::upload([