>  기사  >  백엔드 개발  >  PHP 연결 해제 실패 문제를 해결하는 방법

PHP 연결 해제 실패 문제를 해결하는 방법

藏色散人
藏色散人원래의
2021-03-08 11:16:203153검색

실패한 PHP 연결 해제 해결 방법: 1. 해당 PHP 샘플 파일을 엽니다. 2. "unset($info);"를 사용하여 이미지 프로세스의 차단을 해제합니다. 3. "@unlink" 작업을 다시 실행합니다. "@ unlink($filePath);"입니다.

PHP 연결 해제 실패 문제를 해결하는 방법

이 문서의 운영 환경: Windows 7 시스템, PHP8, Dell G3 컴퓨터.

최근 웹사이트에서 아바타 변경 기능을 하다가 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.