Member 9770440 Ответов: 1

Удаленный сервер вернул ошибку : (500) внутренняя ошибка сервера


Я использовал php-программу для загрузки csv-файла данных с сервера debian Linux. Это было работает нормально. При увеличении количества файлов данных возникает ошибка. Любой эксперт может помочь ?

Мой download.php программа на сервере указана ниже :

<?php
$the_folder = '/home/debian/dcuproc/data';
$zip_file_name = './download/data_dcuproc.zip';

класс FlxZipArchive расширяет ZipArchive {
публичная функция addDir($location, $name) {
$this->addEmptyDir($name);
$this->addDirDo($location, $name);
} // EO addDir;

частная функция addDirDo($location, $name) {
$name .= '/'; $location .= '/';
// Читать все файлы в Dir
$dir = opendir ($location);
в то время как ($файл = вызове readdir($dir будет)) {
если ($file == '.' || $file == '..') продолжить;
// Rekursiv, If dir: FlxZipArchive::addDir(), else ::File();
$do = (filetype( $location . $file) == 'dir') ? 'addDir' : 'addFile';
$this->$do($location . $имя файла . $файл);
}
}
}

$za = новый FlxZipArchive;
$res = $za->open($zip_file_name, ZipArchive::CREATE);
if($res === TRUE) {
$za->addDir($the_folder, basename($the_folder)); $za->close();
}
еще {
echo 'не удалось создать zip-архив';
}

заголовок('Content-Description: передача файлов');
заголовок('Content-Type: application/octet-stream');
заголовок('Content-Disposition: attachment; filename=data.zip');
заголовок('Content-Transfer-Encoding: binary');
заголовок('Expires: 0');
заголовок('кэш-управления: необходимо подтвердить');
заголовок('Pragma: public');
заголовок('Content-Length:' . filesize($zip_file_name));
ob_clean();
промывать();
если (функцию ReadFile($zip_file_name))
{
отменить связь($zip_file_name);
}

?>

Что я уже пробовал:

Я попытался уменьшить количество файлов. Это работает. Но на самом деле нам нужно заархивировать большое количество файлов и загрузить их на ПК, позвонив по телефону download.php от ПК.

1 Ответов

Рейтинг:
4

Jochen Arndt

Видеть PHP: readfile - руководство пользователя[^]:

Цитата:
Примечание:

функцию ReadFile() сам по себе он не будет представлять никаких проблем с памятью, даже при отправке больших файлов. Если вы столкнулись с ошибкой нехватки памяти, убедитесь, что буферизация вывода отключена с помощью ob_get_level().
Если вы все еще получаете ошибки с отключенной буферизацией вывода, вы можете использовать другие методы, как описано в разделе
память - Как скачать большие файлы через PHP скрипт - переполнение стека[^] и
php - Readfile() и большие файлы - переполнение стека[^]