Windows Azure에서 호스팅되는 가상 컴퓨터가 있고이 컴퓨터에 램프 스택을 설정했습니다. 이 웹 사이트에서는 사용자가 앨범을 만들고 이미지를 업로드 할 수 있습니다. 이러한 이미지는 Windows azure blob 저장소에 저장됩니다. 이미지가 클 수 있듯이, 나는 조각으로 파일을 분할 후 다음과 같이 업로드 :PHP의 병렬 스레드
$blockMaxSize = 2*1024*1024; //2MB
$fileSize = $_FILES['Filedata']['size'];
$numOfBlocks = $fileSize/$blockMaxSize;
$currentFileIndex = 0;
$blockId=1;
$blocklist = new BlockList();
while($numOfBlocks>0)
{
$content = file_get_contents($_FILES['Filedata']['tmp_name'],NULL,NULL,$currentFileIndex,$blockMaxSize);
$currentFileIndex+=$blockMaxSize;
$numOfBlocks-=1; //Read the current block.
//upload the block
$blobRestProxy->createBlobBlock(Actual_Image, $blobName, md5($blockId),$content);
$blocklist->addLatestEntry(md5($blockId));
$blockId++;
}
$blobRestProxy->commitBlobBlocks(Actual_Image, $blobName, $blocklist->getEntries());
이는 5MB입니다 작거나 너무 큰 파일에 대해 많은 시간이 걸릴 수 있습니다. 나는 더 빠른 업로드를하기 위해 BLOB 저장소에 병렬로 업로드하는 것을 보았습니다. 나는 $ 콘텐츠 파일 데이터를 포함하는 배열을 만들고 그 내용을 병렬로 업로드하려고합니다. 나는 exec과 * pcntl_fork *를 읽었지만 포크는 서버에서 사용할 수 없으며이 명령을 실행할 때 exec를 사용할 수 있는지 잘 모르겠습니다.
PHP로 가능합니까? 아마도 POSIX 스레드를 사용하고있을 것입니다.
이 정보가 필요하지만 가상 컴퓨터에 4 개의 코어가 있는지 확실하지 않습니다.
이 모양이 좋지만이 파일에 인수를 전달할 수있는 방법이 있습니까? 업로드 할 데이터가 있도록 콘텐츠 및 ID 정보를 전달해야합니다. – Saurabh
항상 쿼리 문자열로 데이터를 전달할 수 있습니다. –