Вместо 8 Мб POST-данных, сервер принимает только 4.

Статус
В этой теме нельзя размещать новые ответы.

winterpnz

Новичок
Вместо 8 Мб POST-данных, сервер принимает только 4.

Значит такая фишка, на хосте максимальный размер пост-данных 8 метров. На другом хосте пишем функцию отправки методом пост, пуляем в сокет. Фишка! Вместо положенных 8 метров реально можно отправить только 4 метра! Время на обработку полученных данных менее секунды на хосте-приемнике.
Все предельно росто
PHP:
 function via_post($name,$filePath,$scriptname,$hostname,$port,$remoute_name,$remoute_data)
{
  $data = "$remoute_name=".urlencode($name)."&$remoute_data=".base64_encode(file_get_contents($filePath))."&submiting=true\r\n\r\n"; 
  $headers = "POST /$scriptname HTTP/1.1\r\n" 
            ."Host: $hostname\r\n" 
            ."Content-type: application/x-www-form-urlencoded\r\n" 
            ."Content-Length: ".strlen($data)."\r\n\r\n"; 
  $fp = @fsockopen($hostname,$port); 
  if($fp)
  {
        fwrite($fp,$headers.$data); 
        echo "<b>";
      while(!feof($fp)) 
        echo fread($fp,2024); 
        echo "</b>";
      fclose($fp);
  }
  else 
  echo "Fsocketopen error!";
}

В чем может быть загвоздка??
 

winterpnz

Новичок
strlen($data) примерно 4070739
PHP:
<?php
	$server_root='';
	$upload_dir='temp';
	
///////////////////////////////////////////////////
$file_save_dir=$_SERVER['DOCUMENT_ROOT']."/".$upload_dir;
if (isset($_POST['submiting']))
{
	if($file_save_dir!='')
	{
			$fp = fopen($file_save_dir.$_POST['name'], "w+");
			$res = fputs($fp, base64_decode($_POST['info']));
			if($res) echo "<b style=\"color:green\">File ".$file_save_dir.$_POST['name']." Successes copy!!!</b>".date("r",time());
	        else echo "<b style=\"color:red\">File ".$file_save_dir.$_POST['name']." Faild copy</b>".date("r",time());;
	}
}
?>
 

hermit_refined

Отшельник
strlen($data) примерно 4070739
1. что значит примерно?.. разве вы не можете вывести и посмотреть?..
2. отлаживайте скрипт на хосте-приемнике - начинает ли он отрабатывать, пишет ли ошибки, меняйте размер посылаемых данных, etc.
PHP FAQ: Ничего не работает! Что делать???
 

winterpnz

Новичок
Примерно это потому что не могу отследить побайтно сколько еще можно отправить, а сколько нет. Пример. 3мб файлом с учетом басе-64 и менее уходит и приходит. 3.1 мб уже нет. Думаю ограничение рОвно в 4 мб (3.0*1.333=3.9999) тоесть половина от 8 на реальное ограничение.
Если писать файл больше 3 мб скрипт-приемник не запускается вообще
 

winterpnz

Новичок
А если точно, то общий пакет не более 4180474
при загружаемом файле str_pad('a',2,99*1024*1024)
 

Фанат

oncle terrible
Команда форума
а теперь кажи мне, почему ты решил, что сервер не принимает данные?
 

winterpnz

Новичок
Автор оригинала: Фанат
а теперь кажи мне, почему ты решил, что сервер не принимает данные?
Он не отвечает на запрос никак. Сокет приходит пустой, не выводит даже самое обычное эхо, хотя при простом запуске или при удачном завершении возвращается сакссесс или фаилд
 

Фанат

oncle terrible
Команда форума
Ну раз не отвечает, то его, наверное, никто и не запрашивает?!
 

voodoo

Новичок
ну у nginx-а, например, есть client_max_body_size, по умолчанию 1МБ. если больше -- то до скриптов дело не дойдет, сервер запрос не будет обрабатывать

у апача -- LimitRequestBody (по умолчанию без лимита).

но ошибку должен выдать все равно
 

winterpnz

Новичок
Что в пхпинфо я не встретил ни того ни другого параметра, есть
memory_limit - 8мб

Да как так никто не запускает??? Меньшего размера загружаются же!
 

maxru

МИФИст
А при чем тут memory_limit, а?(В том смысле, что у тебя размер файла не достигает 8 мб. И попробуй мониторить количество сожранной памяти во время отправки запроса.)

-~{}~ 14.03.07 21:27:

Да, и попробуй проверить, загружается ли на хост-приемник файл, отправленный из формы (больше 3мб).
 

winterpnz

Новичок
Автор оригинала: maxru
А при чем тут memory_limit, а?(В том смысле, что у тебя размер файла не достигает 8 мб. И попробуй мониторить количество сожранной памяти во время отправки запроса.)
Как это сделать без специальной системы контроля? Я могу только написать какой-либо скрипт и залить его. Все! Конфигурить апач или смотреть статистику не могу

Да, и попробуй проверить, загружается ли на хост-приемник файл, отправленный из формы (больше 3мб).
На хост приемник можно загружать файл через обычную мультиформу, размером не более 2 мб по конфигам апача, методом пост тоже можно, но только 4 вместо 8
 

maxru

МИФИст
Это ДО открытия файла или ПОСЛЕ. Если до, то догадайся, почему размер считываемого файла ограничился 3 с копейками мб?
 

winterpnz

Новичок
Да, до, а после 4464216
Без понятия! Если бы стояло ограничение в 4 то да, но стоит 8!
 

maxru

МИФИст
Ну так ты еще файл пытаешься считать мегабайта на 4. 4+4 сколько будет?
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху