업로드 진행률 표시줄을 구현하기 위해 APC 모듈을 사용하는 PHP 공유 예
이 글에서는 주로 PHP가 APC 모듈을 사용하여 파일 업로드 진행률 표시줄을 구현하는 방법을 소개하고, APC 모듈의 구체적인 사용법을 분석하고, APC 관련 구성 지침을 제공합니다. 그것이 모두에게 도움이 되기를 바랍니다.
이전 버전의 php5.2에서는 APC 모듈이 전혀 없었기 때문에 APC 모듈을 사용할 수 없었습니다. APC 모듈을 사용하여 업로드 진행률 표시줄을 구현하려면 php5.2 이상이 되어야 합니다.
5.2부터 APC는 오랫동안 모든 사람을 괴롭히던 진행률 표시줄 문제를 해결하는 APC_UPLOAD_PROGRESS라는 기능을 추가했습니다. 그리고 업로드 시 모든 임시 파일을 메모리에 캐싱하던 기존 방식을 임시 파일이 설정값에 도달하면 자동으로 하드디스크에 저장되도록 변경해 메모리 활용도를 효과적으로 향상시켰다.
작동 방식은 업로드할 때 각 업로드에 고유한 ID를 부여하는 것입니다. PHP 스크립트가 업로드된 파일을 받으면 통역사는 $_POST 배열에서 APC_UPLOAD_PROGRESS라는 숨겨진 필드를 자동으로 확인하여 캐시 변수가 되고 정보를 저장합니다. 스크립트가 업로드 ID를 통해 업로드된 파일에 대한 상태 정보에 액세스할 수 있도록 업로드에 대해 설명합니다.
APC는 Alternative PHP Cache의 약어로, PHP용 무료 공개 최적화 코드 캐시입니다. 이는 PHP 중간 코드를 캐싱하고 최적화하기 위한 무료 개방형의 강력한 프레임워크를 제공하는 데 사용됩니다.
APC 모듈의 매개변수 구성, 코드는 다음과 같습니다.
Name Default Changeable Changelog apc.enabled 1 PHP_INI_ALL apc.shm_segments 1 PHP_INI_SYSTEM apc.shm_size 30 PHP_INI_SYSTEM apc.optimization 0 PHP_INI_ALL apc.num_files_hint 1000 PHP_INI_SYSTEM apc.ttl 0 PHP_INI_SYSTEM apc.gc_ttl 3600 PHP_INI_SYSTEM apc.cache_by_default On PHP_INI_SYSTEM apc.filters "" PHP_INI_SYSTEM apc.mmap_file_mask "" PHP_INI_SYSTEM apc.slam_defense 0 PHP_INI_SYSTEM apc.file_update_protection 2 PHP_INI_SYSTEM apc.enable_cli 0 PHP_INI_SYSTEM > APC 3.0.6
이제 구성이 완료되었으므로 프로그램 작성을 시작합니다
XML/HTML 코드는 다음과 같습니다:
<!–以下为上传表单–> <form enctype="multipart/form-data" id="upload_form" action="" method="POST"> <input type="hidden" name="APC_UPLOAD_PROGRESS" id="progress_key" value="upid"/> 视频标题:<input type="text" id="subject" name="subject"/> 视频说明:<input type="text" id="content" name="content"/> 视频TAG(以逗号分割)<input type="text" id="tag" name="tags"/> <input type="file" id="upfile" name="upfile"/> <input type="submit" id="filesubmit" value="上传" onclick="startProgress('upid'); return true;"/> <!–注意:startProgress('upid')中的参数是你从php中分配的唯一上传参数–> </form> <!–以下为上传进度条–> <p id="upstatus" style="width: 500px; height: 30px; border: 1px solid ##ffffde; color:#796140;"> </p <p id="progressouter" style="width: 500px; height: 20px; border: 3px solid #de7e00; display:none;"> <p id="progressinner" style="position: relative; height: 20px; color:#796140; background-color: #f6d095; width: 0%; "></p> </p>
The 가장 중요한 것은 APC_UPLOAD_PROGRESS의 숨겨진 필드입니다. 이 스크립트를 사용하면 현재 업로드된 파일의 상태에 액세스하고 p를 추가하여 업로드 상태를 표시할 수 있습니다.
다음은 Ajax를 처리하기 위한 스크립트입니다. Jquery 프레임워크와 json을 사용하여 메시지를 전달합니다.
JavaScript 코드는 다음과 같습니다:
function getProgress(upid){ var url = "<{$siteurl}>epadmin/upprocess"; $.getJSON( url, { progress_key: upid }, function(json){ $("#progressinner").width(json.per+"%"); $("#upstatus").html('文件大小:'+json.total+'KB'+' 已上传:'+json.current+'KB'); if (json.per < 100){ setTimeout(function(){ getProgress(upid); }, 10); }else{ $("#upstatus").html("视频上传完成,正在处理数据,请稍后……"); } } ) } function startProgress(upid){ $("#progressouter").css({ display:"block" }); setTimeout(function(){ getProgress(upid); }, 100); }
다음은 업로드된 파일의 처리 상태를 읽는 PHP 코드입니다.
//上传文件操作函数,可按照自己的需要编写 function upflvAction() { if($_SERVER['REQUEST_METHOD']=='POST'){ $subject = trim($this->f->filter($this->_request->getPost('subject'))); $content = trim($this->f->filter($this->_request->getPost('content'))); Zend_Loader::loadClass('Custom_FlvOp'); $flv = new Custom_FlvOp; $flv->uploadFlv('upfile',$subject,$content); } } //这就是读取上传状态的函数了~~ function upprocessAction() { if(isset($_GET['progress_key'])) { $status = apc_fetch('upload_'.$_GET['progress_key']); $json = array( 'per'=>$status['current']/$status['total']*100, 'total'=>round($status['total']/1024), 'current'=>round($status['current']/1024), ); require_once("Zend/Json.php"); echo Zend_Json::encode($json); } }
apc 구성에 대한 자세한 설명:
apc.enabled Boolean
apc.enabled를 0으로 설정하면 APC가 정적으로 컴파일될 때 유용합니다. PHP를 비활성화할 수 있는 다른 방법이 없기 때문에 DSO로 컴파일할 때 php.ini에서 확장 라인을 주석 처리할 수 있습니다.
apc.shm_segments 정수
컴파일 캐시에 할당된 공유 메모리 블록 수 APC에 공유 메모리가 부족하며 apc.shm_size를 시스템에서 허용하는 최대값으로 설정했습니다. 값의 경우 이 매개변수의 값을 늘릴 수 있습니다.
apc.shm_size Integer
각 크기 공유 메모리 블록은 MB 단위입니다. 기본적으로 일부 시스템(대부분의 BSD 변형 포함)은 공유 메모리 블록 크기 제한이 매우 낮습니다.
apc.optimization 정수
최적화 수준. 최적화를 비활성화하려면 0으로 설정하고, 값이 높을수록 더 강력한 최적화를 사용합니다. 적당한 속도 향상을 기대합니다. 이는 아직 실험적인 성격을 띠고 있습니다.
apc.num_files_hint 정수
웹 서버에 포함되고 요청된 다양한 소스 파일 수에 대한 힌트입니다. 확실하지 않은 경우 0으로 설정하거나 생략하세요. 이 설정은 주로 수천 개의 소스 파일이 있는 사이트에 유용할 수 있습니다.
apc.ttl Integer
캐시 영역의 다른 항목에 캐시 항목이 필요할 때 고려해야 할 것은 이 캐시 항목이 캐시 영역에서 유휴 상태로 허용되는 시간(초)입니다. 이 매개변수를 0으로 설정하면 캐시가 오래된 항목으로 채워지고 새 항목이 캐시되지 않음을 의미합니다.
apc.gc_ttl 정수
캐시 항목이 가비지 수집 목록에 남아 있는 시간(초)입니다. 이 값은 서버 프로세스가 종료되는 동안 캐시된 소스 파일이 실행되는 경우 오류 방지 기능을 제공합니다. 해당 소스 파일이 수정되면 이 매개변수로 설정된 TTL 값에 도달할 때까지 이전 버전의 캐시 항목에 할당된 메모리가 회수되지 않습니다. 0으로 설정하면 이 기능이 비활성화됩니다.
apc.cache_by_default 부울
기본값은 On이지만 Off로 설정하고 더하기 기호로 시작하는 apc.filters와 함께 사용할 수 있습니다. 파일은 필터와 일치하는 경우에만 캐시됩니다.
apc.filters 문자열
POSIX 확장 정규식의 쉼표로 구분된 목록입니다. 패턴이 소스 파일 이름과 일치하면 파일이 캐시되지 않습니다. 일치하는 데 사용되는 파일 이름은 절대 경로가 아니라 포함/요구에 전달된 파일 이름입니다. 정규식의 첫 번째 문자가 + 이면 표현식은 표현식과 일치하는 모든 파일이 캐시됨을 의미하고, 첫 번째 문자가 - 이면 일치하는 항목이 캐시되지 않음을 의미합니다. -는 기본값이므로 생략 가능합니다.
apc.mmap_file_mask 문자열
apc.slam_defense 정수
사용량이 많은 서버에서는 서비스를 시작하든 파일을 수정하든 동시에 동일한 파일을 캐시하려고 하는 여러 프로세스에 대한 경쟁이 발생합니다. 이 옵션은 프로세스가 캐시되지 않은 파일을 캐시하려는 시도를 건너뛰는 비율을 설정합니다. 또는 단일 프로세스가 캐시를 건너뛸 확률로 생각하세요. 예를 들어, apc.slam_defense를 75로 설정하면 프로세스가 캐시되지 않은 파일을 캐시하지 않을 확률이 75%라는 의미입니다. 따라서 설정이 높을수록 캐시 충돌 확률이 감소할 가능성이 높아집니다. 이 기능을 비활성화하려면 0으로 설정하십시오.
apc.file_update_protection 정수
실행 중인 서버에서 파일을 수정할 때는 원자성 작업을 수행해야 합니다. 즉, 먼저 임시 파일을 작성한 다음 완료되면 파일 이름을 최종 위치로 바꿉니다(mv). 많은 텍스트 편집기, cp, tar 및 기타 유사한 프로그램은 이런 방식으로 작동하지 않습니다. 이는 파일이 기록되는 동안 파일에 액세스하고 (캐시)할 수 있는 기회가 있음을 의미합니다. apc.file_update_protection을 설정하면 캐시가 새 파일 표시를 지연시킵니다. 기본값은 2이며, 이는 파일 수정 시간이 액세스 시간으로부터 2초 미만인 것으로 확인되면 파일을 캐시하지 않음을 의미합니다. 반만 작성된 파일에 액세스하는 불운한 사용자는 기괴한 동작을 보게 되지만 적어도 지속되지는 않습니다. 파일을 업데이트하기 위해 원자성 작업을 자주 사용하는 경우 이 매개변수를 0으로 설정하여 이 보호 기능을 끌 수 있습니다. 시스템에 IO 작업이 너무 많아 업데이트 프로세스가 2초 이상 걸리는 경우 이 값을 늘려야 할 수 있습니다.
apc.enable-cli 정수
는 PHP의 CLI 버전에 대한 APC 기능을 활성화하기 위해 주로 테스트 및 디버깅에 사용됩니다. 일반적으로 모든 CLI 요청에 대해 APC 캐시를 생성, 이식 및 삭제하는 것을 생각하지 않습니다. . 그러나 다양한 테스트 상황에서는 CLI 버전에 대해 APC를 활성화하는 것이 매우 쉽습니다.
관련 권장 사항:
Memcached PHP Memcached + APC의 APC 캐시 사용에 대한 샘플 코드 + 파일 캐시 캡슐화 구현 코드
위 내용은 업로드 진행률 표시줄을 구현하기 위해 APC 모듈을 사용하는 PHP 공유 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는

이 튜토리얼은 PHP를 사용하여 XML 문서를 효율적으로 처리하는 방법을 보여줍니다. XML (Extensible Markup Language)은 인간의 가독성과 기계 구문 분석을 위해 설계된 다목적 텍스트 기반 마크 업 언어입니다. 일반적으로 데이터 저장 AN에 사용됩니다

숙련된 PHP 개발자라면 이미 그런 일을 해왔다는 느낌을 받을 것입니다. 귀하는 상당한 수의 애플리케이션을 개발하고, 수백만 줄의 코드를 디버깅하고, 여러 스크립트를 수정하여 작업을 수행했습니다.

JWT는 주로 신분증 인증 및 정보 교환을 위해 당사자간에 정보를 안전하게 전송하는 데 사용되는 JSON을 기반으로 한 개방형 표준입니다. 1. JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다. 2. JWT의 작업 원칙에는 세 가지 단계가 포함됩니다. JWT 생성, JWT 확인 및 Parsing Payload. 3. PHP에서 인증에 JWT를 사용하면 JWT를 생성하고 확인할 수 있으며 사용자 역할 및 권한 정보가 고급 사용에 포함될 수 있습니다. 4. 일반적인 오류에는 서명 검증 실패, 토큰 만료 및 대형 페이로드가 포함됩니다. 디버깅 기술에는 디버깅 도구 및 로깅 사용이 포함됩니다. 5. 성능 최적화 및 모범 사례에는 적절한 시그니처 알고리즘 사용, 타당성 기간 설정 합리적,

문자열은 문자, 숫자 및 기호를 포함하여 일련의 문자입니다. 이 튜토리얼은 다른 방법을 사용하여 PHP의 주어진 문자열의 모음 수를 계산하는 방법을 배웁니다. 영어의 모음은 A, E, I, O, U이며 대문자 또는 소문자 일 수 있습니다. 모음이란 무엇입니까? 모음은 특정 발음을 나타내는 알파벳 문자입니다. 대문자와 소문자를 포함하여 영어에는 5 개의 모음이 있습니다. a, e, i, o, u 예 1 입력 : String = "Tutorialspoint" 출력 : 6 설명하다 문자열의 "Tutorialspoint"의 모음은 u, o, i, a, o, i입니다. 총 6 개의 위안이 있습니다

정적 바인딩 (정적 : :)는 PHP에서 늦은 정적 바인딩 (LSB)을 구현하여 클래스를 정의하는 대신 정적 컨텍스트에서 호출 클래스를 참조 할 수 있습니다. 1) 구문 분석 프로세스는 런타임에 수행됩니다. 2) 상속 관계에서 통화 클래스를 찾아보십시오. 3) 성능 오버 헤드를 가져올 수 있습니다.

PHP의 마법 방법은 무엇입니까? PHP의 마법 방법은 다음과 같습니다. 1. \ _ \ _ Construct, 객체를 초기화하는 데 사용됩니다. 2. \ _ \ _ 파괴, 자원을 정리하는 데 사용됩니다. 3. \ _ \ _ 호출, 존재하지 않는 메소드 호출을 처리하십시오. 4. \ _ \ _ get, 동적 속성 액세스를 구현하십시오. 5. \ _ \ _ Set, 동적 속성 설정을 구현하십시오. 이러한 방법은 특정 상황에서 자동으로 호출되어 코드 유연성과 효율성을 향상시킵니다.
