xVoLAnD
Новичок
fsockopen, multipart/form-data странное
Совсем замучал этот вопрос...
Есть задача: передача файлов средствами fsockopen() multipart/form-data....
происходит передача, примерно так:
for() {
header = "GET ...."
header .="... multipart/form-data...."
....
fsockopen()
fwrite()
fclose()
}
собственно вопрос...
Когда так происходит передача файла (один за другим) различного размера, скорость снижается... почему?
с чем это может быть связано?
p.s.: нет возможности использовать cURL и т.д. ТОЛЬКО сырые сокеты
Совсем замучал этот вопрос...
Есть задача: передача файлов средствами fsockopen() multipart/form-data....
происходит передача, примерно так:
for() {
header = "GET ...."
header .="... multipart/form-data...."
....
fsockopen()
fwrite()
fclose()
}
собственно вопрос...
Когда так происходит передача файла (один за другим) различного размера, скорость снижается... почему?
с чем это может быть связано?
p.s.: нет возможности использовать cURL и т.д. ТОЛЬКО сырые сокеты
PHP:
$boundary = "HTTP-DATA-BOUNDARY-0-" . substr( md5( rand(0,32000) ), 0, 10 );
// Build the header
$header = "POST " . $arr_url["path"] . ( !empty( $arr_url["query"] ) ? "?".$arr_url["query"] : "" ) ." HTTP/1.0\r\n";
$header .= "Host: " . $arr_url["host"] . "\r\n";
$header .= "Content-Type: multipart/form-data; boundary=$boundary\r\n";
$header .= "Connection: Close\r\n";
// and attach the file
if( !empty( $arr_files ) ) {
for ($i=0; $i < count( $arr_files['userfile']['name']); $i++ ) {
$data .= "--$boundary\r\n";
if ($arr_files['userfile']['name'][$i] != '')
{
$content_file = file_get_contents( $arr_files['userfile']['tmp_name'][$i] );
$data.="Content-Disposition: file; name=\"filename\"; filename=\"".$arr_files['userfile']['name'][$i]."\"\r\n";
$data .= "Content-Type: ".$arr_files['userfile']['type'][$i]."\r\n\r\n";
$data .= "".$content_file."\r\n";
$data .="--$boundary\r\n";
}
}
}
$data .="--$boundary--\r\n";
$header .= "Content-length: " . strlen( $data ) . "\r\n\r\n";
unset( $res );
$fp = fsockopen( $arr_url["host"], 80, $errno, $errstr, 30 );