Помогите настроить PHP

IZ
На сайте с 30.11.2006
Offline
101
1004

Немного опишу ситуацию.

Есть сервер, Plesk и Windows 2003.

На серваке крутиться файловый сервер.

Скрипт (использует mysql ), через него пользователи качают файлы с сервака.

Суть проблемы. При загрузке файлов на сервер больше 20-30 мегов связь как бы теряться, скрипт работает но ничего не передается, если файлы небольшие до 20 мегов то всё ОК.

И такая же ерунда с закачкой файлов с сервера, если файл например 100 мегов, то скачивается мегов 30 и обрубается. С небольшими файлами такой проблемы нет.

Скрипт простой и 100 % рабочий, работал на нескольких хостингах. В самом скрипте никаких ограничений на скорость, время и т.д. нет. То есть всё зависит от настройки сервака.

Короче складывается ощущение, что стоит ограничение на время работы скрипта или ограничение подключений к базе или ещё чего... У кого какие идеи?

Сразу скажу, что параметр max_execution_time в php.ini менял от 30 до 1800 не помогает

FileBonus.net (https://u.to/t37qEw) - Заработай на файлах до 20$/1000 DL
Петр Елагин
На сайте с 21.03.2007
Offline
197
#1
Ice Zero:
Немного опишу ситуацию.
Есть сервер, Plesk и Windows 2003.
На серваке крутиться файловый сервер.
Скрипт (использует mysql ), через него пользователи качают файлы с сервака.

Суть проблемы. При загрузке файлов на сервер больше 20-30 мегов связь как бы теряться, скрипт работает но ничего не передается, если файлы небольшие до 20 мегов то всё ОК.
И такая же ерунда с закачкой файлов с сервера, если файл например 100 мегов, то скачивается мегов 30 и обрубается. С небольшими файлами такой проблемы нет.

Скрипт простой и 100 % рабочий, работал на нескольких хостингах. В самом скрипте никаких ограничений на скорость, время и т.д. нет. То есть всё зависит от настройки сервака.

Короче складывается ощущение, что стоит ограничение на время работы скрипта или ограничение подключений к базе или ещё чего... У кого какие идеи?

Сразу скажу, что параметр max_execution_time в php.ini менял от 30 до 1800 не помогает

1. в студию PHP.ini

2. Ошибки хоть кактие-то пишет ?

3. У меня так, а раньше тоже падало

4. Вот

file_uploads = On ; Whether to allow HTTP file uploads.

post_max_size = 130M ; Maximum size of POST data that PHP will accept.

upload_max_filesize = 130M ; Maximum allowed size for uploaded files.

default_socket_timeout = 120000 ; Default timeout for socket based streams (seconds)

max_execution_time = 120000 ; Maximum execution time of each script, in seconds

max_input_time = 120000 ; Maximum amount of time each script may spend parsing request data

memory_limit = 330M ; Maximum amount of memory a script may consume (8MB)

5. Иногда провайдер закрывает, как например MTW

IZ
На сайте с 30.11.2006
Offline
101
#2
AlienZzzz:
1. в студию PHP.ini
2. Ошибки хоть кактие-то пишет ?
3. У меня так, а раньше тоже падало
4. Вот
file_uploads = On ; Whether to allow HTTP file uploads.
post_max_size = 130M ; Maximum size of POST data that PHP will accept.
upload_max_filesize = 130M ; Maximum allowed size for uploaded files.
default_socket_timeout = 120000 ; Default timeout for socket based streams (seconds)
max_execution_time = 120000 ; Maximum execution time of each script, in seconds
max_input_time = 120000 ; Maximum amount of time each script may spend parsing request data
memory_limit = 330M ; Maximum amount of memory a script may consume (8MB)
5. Иногда провайдер закрывает, как например MTW

1. php Прикрепил

2. нет, ошибок нет, никаких сообщений не появляется

B
На сайте с 26.12.2006
Offline
51
#3

у вас стоит

post_max_size = 15M

т.е. не более 15МБ на размер данных в post запросе...

по поводу скачки файла 100мб, кусок кода можете привести, как отдаете файл? если в php.ini все нормально настроить то все ок должно быть.

PHP,MySQL,JavaScript,AJAX
IZ
На сайте с 30.11.2006
Offline
101
#4
bleed:
у вас стоит
post_max_size = 15M
т.е. не более 15МБ на размер данных в post запросе...

по поводу скачки файла 100мб, кусок кода можете привести, как отдаете файл? если в php.ini все нормально настроить то все ок должно быть.

require_once('incs/load_functions.php');

require_once('incs/load_database.php');

connect_me();

//Load configuration variables

$get_variables = @mysql_query("SELECT * FROM `admin_config`");

while($each_variable = @mysql_fetch_array($get_variables)){

$$each_variable['variable_n'] = $each_variable['variable_v'];

}

$check_session = @mysql_fetch_array(@mysql_query("SELECT * FROM `download_session` WHERE `session_id`='$_GET[session]'"));

if($check_session['session_id'] != $_GET['session']){

die('<html><head><title>Invalid Session</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8">

</head><meta http-equiv="refresh" content="5;URL='.$SITE_URL.'">

<body>INVALID SESSION, REDIRECTING.....</body></html>');

}

$dddt = date("Y-m-d G:i:s");

$update_hits = @mysql_query("UPDATE `file_list` SET `file_hits`=file_hits+1,`last_touch`='$dddt'

WHERE `file_id`='$check_session[file_id]'");

$delte = @mysql_query("DELETE FROM `download_session` WHERE `session_id`='$_GET[session]'");

$file_loc = $UPLOAD_DIR.$check_session['file_is'];

$file_size = @filesize($file_loc);

if($FILE_DOWN_LIM != 0){

if($file_size > (($FILE_DOWN_LIM*1024)*1024)){

update_activity('DN');

}

}

disconnect_me();

$file_name = $check_session['file_show'];

$file_name = str_replace(' ','_',$file_name);

$file_info['swf'] = array($directory_link,'application/x-shockwave-flash');

$file_info['pdf'] = array($directory_link,'application/pdf');

$file_info['exe'] = array($directory_link,'application/octet-stream');

$file_info['zip'] = array($directory_link,'application/zip');

$file_info['doc'] = array($directory_link,'application/msword');

$file_info['xls'] = array($directory_link,'application/vnd.ms-excel');

$file_info['ppt'] = array($directory_link,'application/vnd.ms-powerpoint');

$file_info['gif'] = array($directory_link,'image/gif');

$file_info['png'] = array($directory_link,'image/png');

$file_info['jpeg'] = array($directory_link,'image/jpg');

$file_info['jpg'] = array($directory_link,'image/jpg');

$file_info['mp3'] = array($directory_link,'audio/mpeg');

$file_info['wav'] = array($directory_link,'audio/x-wav');

$file_info['mpeg'] = array($directory_link,'video/mpeg');

$file_info['mpg'] = array($directory_link,'video/mpeg');

$file_info['mpe'] = array($directory_link,'video/mpeg');

$file_info['mov'] = array($directory_link,'video/quicktime');

$file_info['avi'] = array($directory_link,'video/x-msvideo');

$file_ext = explode('.',$file_name);

$ext = $file_ext[count($file_ext)-1];

$this_info = $file_info[$ext];

if(ini_get('zlib.output_compression')){

@ini_set('zlib.output_compression', 'Off');

}

@header("Pragma: public"); // required

@header("Expires: 0");

@header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

@header("Cache-Control: private",false); // required for certain browsers

@header("Content-Type: $this_info[1]");

@header("Content-Disposition: attachment; filename=".basename($file_name).";" );

@header("Content-Transfer-Encoding: binary");

@header("Content-Length: ".filesize($file_loc));

$file = fopen($file_loc,'r');

while($temp = fread($file,1024657)){

echo $temp;

}

fclose($file);

exit();

?>

Петр Елагин
На сайте с 21.03.2007
Offline
197
#5
Ice Zero:

Реально много букф - я просто не осилил.


function SetHeaderForDn(
$sFileName
,$iLen
,$bIsInline = true
,$sType = 'application/force-download'
){
$sFileName = str_replace('\\',DIRECTORY_SEPARATOR,$sFileName);
$sFileName = ltrim(
strrchr($sFileName
, DIRECTORY_SEPARATOR
),DIRECTORY_SEPARATOR
);
$sFileName = '';
/*Проба нового Алгоритма*/
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: public');
header('Content-Description: File Transfer');
header('Content-Type: '.$sType );

// $bIsInline = false;
if ($bIsInline) {
header('Content-Disposition: inline; filename='.$sFileName.';');
}else{
header('Content-Disposition: attachment; filename='.$sFileName.';');
}
header('Content-Transfer-Encoding: binary');
header('Content-Length: '.$iLen);
// print_r(apache_response_headers());
// die;
}

Вот кусок кода. эта функция, которую я запускаю перед тем как отдать файл.

обратите внимание на


header('Content-Transfer-Encoding: binary');
header('Content-Length: '.$iLen);

параметр "$bIsInline" , очень важен, чтоб например файл екзел не открывался прям в броузере.

IZ
На сайте с 30.11.2006
Offline
101
#6

И так после всех изменений в PHP.INI проблема осталась! 😕

Сегодня провёл небольшой эксперимент, засек время сколько скачиваются файлы.

Итог, ровно 5 минут сервер отдаёт файл а потом загрузка как бы подвисает...

Подскажите где такие ограничения могут быть... может проблема не в PHP.ini ?

Всё остальное работает отлично...

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий