요구 사항 설명:
바이두 클라우드 플랫폼의 동영상 솔루션을 사용하세요. 해결 방법은 먼저 휴대폰을 자체 서버에 업로드한 다음 자체 서버에서 바이두 서버로 업로드하는 것입니다. PHP 배경은 사용자를 완료합니다. 자신의 서버에 업로드할 때 업로드가 성공했다는 사용자에게 반환한 다음 Baidu 서버에 업로드를 수행합니다. 현재 직면한 문제는 PHP 백엔드가 클라이언트에 반환되기 전에 모든 실행이 완료될 때까지 기다린다는 것입니다. 매번 오랜 시간을 기다리게 만듭니다.
혹시 마스터 중 조언을 주실 수 있으신가요? 저는 프론트엔드 개발자로서 PHP 초보자로서 많은 문제에 직면했습니다. 모두 감사합니다.
요구 사항 설명:
바이두 클라우드 플랫폼의 동영상 솔루션을 사용하세요. 해결 방법은 먼저 휴대폰을 자체 서버에 업로드한 다음 자체 서버에서 바이두 서버로 업로드하는 것입니다. PHP 배경은 사용자를 완료합니다. 자신의 서버에 업로드할 때 업로드가 성공했다는 사용자에게 반환한 다음 Baidu 서버에 업로드를 수행합니다. 현재 직면한 문제는 PHP 백엔드가 클라이언트에 반환되기 전에 모든 실행이 완료될 때까지 기다린다는 것입니다. 매번 오랜 시간을 기다리게 만듭니다.
혹시 마스터 중 조언을 주실 수 있으신가요? 저는 프론트엔드 개발자로서 PHP 초보자로서 많은 문제에 직면했습니다. 모두 감사합니다.
PHP 서비스에서 PHP-FPM을 사용하는 경우 특히 비디오 업로드 작업 처리를 위해 프로세스 풀을 열 수 있습니다. 스크립트는 fastcgi_finish_request를 사용하여 사용자의 요청에 신속하게 응답하고 시간이 많이 걸리는 업로드 처리를 수행합니다.
<code><?php echo '手机端视频先上传至自有服务器'; sleep(10); echo '上传成功'; fastcgi_finish_request(); //响应用户,结束请求 echo '程序继续操作,从自有服务器上传至百度服务器'; sleep(10);</code>
Nginx는 업로드된 콘텐츠를 수신한 후 한 번만 PHP-FPM에 전달하므로 파일 업로드 프로세스 중에는 PHP-FPM이 차단되지 않습니다.
"자체 서버에서 Baidu 서버로 업로드" 작업은 차단은 PHP-FPM 작업자 프로세스를 차지합니다.
이때 시스템의 다른 스크립트를 차단하지 않도록 이 작업을 처리할 업로드 프로세스 풀을 설정하는 것을 고려할 수 있습니다.
<code>nginx.conf: upload.php脚本的处理都交给监听9001的PHP-FPM进程池处理 location = /upload.php { include fastcgi_params; fastcgi_pass 127.0.0.1:9001; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } php-fpm: 正常的脚本由静态www池处理,网络阻塞脚本由动态upload池处理 [www] listen = 127.0.0.1:9000 pm = static pm.max_children = 4 [upload] listen = 127.0.0.1:9001 pm = dynamic pm.max_children = 8 pm.start_servers = 4 pm.min_spare_servers = 4 pm.max_spare_servers = 4</code>
대기열을 사용할 수 있습니다. 사용자가 업로드를 완료한 후 작업을 대기열에 직접 넣은 다음 돌아와서 업로드를 완료하면 시스템이 예약된 작업을 실행하여 대기열을 실행합니다. 대기열 신청에는 여러 가지 형태가 있으며 검색하실 수 있습니다