Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Allowed memory size of 16777216 bytes exhausted
 
 автор: jeans1986   (04.05.2007 в 22:58)   письмо автору
 
 

Имеется такой код:

$query = "SELECT * FROM file WHERE id_file='$id_file' AND id_folder = '$id_parent' AND id_user='$id_user';";
$data = mysql_query($query);
if (@!$data) {exit();}
$file = mysql_fetch_array($data);
$down = "../downloads/".$file['name'];
if (copy("../uploads/".$file['id_file'], $down)){
header( "Content-Disposition: attachment; filename=$down");
header("Content-type: application/octet-stream"); 
echo file_get_contents($down); 
chmod($down, 0777);
unlink($down);

При скачивании фаилов вызывается этот скрпит. На большие фаилы думает очень долго и выводит ошибку

<b>Fatal error</b>: Allowed memory size of 16777216 bytes exhausted (tried to allocate 734035969 bytes) in <b>/var/www/jan/ssss/php/download.php</b> on line <b>37</b><br />

   
 
 автор: Trianon   (04.05.2007 в 23:44)   письмо автору
 
   для: jeans1986   (04.05.2007 в 22:58)
 

Зачем же Вы его (echo file_get_contents($down); ) пытаетесь целиком через оперативную память перетаскивать?
Применяйте fopen() и fpassthru()

   
 
 автор: cheops   (05.05.2007 в 01:55)   письмо автору
 
   для: jeans1986   (04.05.2007 в 22:58)
 

Это означает, что вы исчерпали отведённые скрипту 16Мб и ещё 70 он принять уже не может.

   
 
 автор: jeans1986   (05.05.2007 в 09:14)   письмо автору
 
   для: cheops   (05.05.2007 в 01:55)
 

А как советутете сделать?

   
 
 автор: cheops   (05.05.2007 в 14:18)   письмо автору
 
   для: jeans1986   (05.05.2007 в 09:14)
 

Воспользуйтесь функциями fopen() и fpassthru(), как советует Trianon.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования