2017-02-23 3 views
-1

cakephp3.0 웹 애플리케이션을 개발 중입니다. 거기에 업로드 비디오 페이지가 있습니다. 사용자는 최대 2GB의 n 개의 동영상을 업로드 할 수 있습니다. 그래서 동영상을 멀티 파트로 업로드하지만 순차적 인 순서로 업로드하고 있습니다. for 루프를 사용하여 첫 번째 비디오를 반복하는 것과 마찬가지로 두 번째 비디오가 올 것이지만 문제는 사용자가이 업로드 작업을 완료하고 응답을 얻기 위해 오래 기다릴 필요가 있다는 것입니다. 다른 대기열에서 동시에 여러 동영상을 업로드하는 것과 같은 방식으로 업로드하고 싶습니다. 업로드가 매우 빠르게 완료 될 수 있습니다. PHP에서 다중 처리를 수행 할 수있는 방법이 있습니까?PHP에서 Parllel 처리

+3

하나의 TCP 연결은 클라이언트와 서버 사이의 가능한 업로드 대역폭에서 최대로 가정된다. 병렬로 여러 파일 업로드 * 순차적으로 업로드하는 것보다 빠르지 않아야합니다. 각 업로드는 단순히 느려질 것입니다. 어쩌면 실제로 약간의 차이가있을 수도 있지만 순차적 업로드에서 병렬 업로드로 전환하면 갑자기 "매우 빠름"하지 않아야합니다. 이는 서버의 대역폭이 병목 현상이었고 병렬 업로드가 여러 서버에 분산되는 경우에만 차이가있었습니다. 그러나 클라이언트는 어쨌든 병목 일 가능성이 있습니다. – deceze

+0

@deceze가 말한 것처럼 - 당신은 대역폭을 최대한 활용할 수 있습니다. 전체 업로드 속도를 사용하여 1 개의 파일을 업로드하고 전체 업로드 속도를 사용하여 10 개의 파일을 업로드하는 경우 어떻게 될 것이라고 생각하십니까? 당신은 여전히 ​​전체 업로드 속도를 사용하고 있습니다. 그렇다면 무엇이 더 빠를 것이라고 생각합니까? PHP와 관련이있는 이유는 무엇이라고 생각합니까? 파일 수신에 대한 책임도 없습니다. 웹 서버가 있습니다. – Mjh

+0

문제는 다른 사용자가 다른 비디오를 업로드하려고하면 너무 많은 비디오를 업로드 할 때 대기열에있게됩니다. 그래서 적절한 관리가 필요하지 않도록하기 위해서 –

답변

1

병렬로 업로드하는 경우 클라이언트 업로드/서버 다운로드 속도를 병렬 업로드 수로 나눕니다. 순차적으로 업로드하는 경우 단일 파일에 대해이 속도를 최대 속도로 최대화합니다. 따라서 최종 결과는 정확히 동일합니다.

그러나 양식 제출을 수행하는 경우 모든 업로드가 성공할 때까지 사용자의 브라우저가 실제로 잠길 것입니다. 거기에 머 무르려면 사용자가 있어야합니다. 그래도 문제는 없지만 사용자에게 무엇이 진행되고 있는지 알려주는 UX 솔루션이 있어야합니다.

그렇기 때문에 양식 제출을 가로 채고 각각을 (순차적으로) 자바 스크립트로 업로드해야합니다. 그런 다음 UX를 추가하여 사용자에게 진행 상황을 보여줄 수도 있습니다.

현재 JS와 업로드에 대한 자세한 정보를 찾을 수 있습니다

https://w3c.github.io/FileAPI/#FileReader-interface