ホームページ  >  記事  >  バックエンド開発  >  PHPのリンク解除失敗の問題を解決する方法

PHPのリンク解除失敗の問題を解決する方法

藏色散人
藏色散人オリジナル
2021-03-08 11:16:203314ブラウズ

php リンク解除失敗の解決策: 1. 対応する PHP サンプル ファイルを開きます; 2. "unset($info);" を使用して画像のプロセスのブロックを解除します; 3. "@unlink" を再実行します操作。構文「@unlink($filePath);」。

PHPのリンク解除失敗の問題を解決する方法

#この記事の動作環境: Windows 7 システム、PHP8、Dell G3 コンピューター。

最近、Web サイトでアバター変更機能を実行したときに、PHP ファイルのアップロードが必要になりました。

私が採用している解決策は、まずユーザーがサーバーにアップロードし、その後サーバーがAlibaba CloudのOSSにアップロードするのですが、途中で画像をサーバーに一時保存する処理が入ります。そこで、PHPの@unlink(指定ファイルの削除)メソッドを使用すると削除に失敗する問題を発見しました。

最初はパス名が間違っているのかと思いましたが、後でこのパラメータが正しいことを確認しました。削除が失敗する理由は、ピクチャがまだプロセスによって占有されているためです。そのため、@unlink 操作を正常に実行したい場合は、ファイル オブジェクトを手動で解放して、他のスレッドやスレッドによって占有されているために削除が失敗するのを避けることをお勧めします。

// [API接口-用户更新头像]
public function setAvatar()
{
// 获取表单上传文件
$file = $this->request->file('avatar');
if ($file) {
// 移动到框架应用根目录/public/uploads/ 目录下
$info = $file->rule('date')->move(ROOT_PATH . 'public' . DS . 'uploads');
if ($info) {//文件上传到服务器成功->接下来上传到OSS
        $filePath = ROOT_PATH . 'public' . DS . 'uploads/' . $info->getSaveName();
       
        $oss = new Oss();
        $result = $oss->putObject($filePath); 
                  
if ($result) { //上传到OSS成功                              
unset($info);//解除图片的进程占用
@unlink($filePath);
return success(['avatar' => $result['fileSrc']], '头像更新成功');
}
        }
}
}

独学は非常に難しいと言わざるを得ませんが、その理由は外側の世界ではなく内側にあります。今回、自分のやりたいことを追求するために退路を断ち、安定した仕事を辞めましたが、その犠牲が無駄にならないことを願っています。

[推奨: 「PHP ビデオ チュートリアル 」]

以上がPHPのリンク解除失敗の問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。