Проблемы с сайтом PHP

#php

#php

Вопрос:

Мой код file.php:

 <?php

if(!isset($_GET['filename']) OR $_GET['filename'] == NULL) {
    print("Error!");
    exit();
}
$_GET['filename'] = htmlentities($_GET['filename'], ENT_QUOTES, "utf-8");
session_start();

include_once("/var/www/html/get.php");

for($i = 0; $i < $GLOBALS['files']['ile']; $i  ) {

    if($GLOBALS['files'][$i]['name'] == $_GET['filename']) {
        if($GLOBALS['files'][$i]['priv'] == NULL OR $GLOBALS['files'][$i]['owner'] == $_SESSION['id'] OR (isset($_SESSION['privs']) AND in_array($GLOBALS['files'][$i]['priv'], $_SESSION['privs']))) {
            if(file_exists($GLOBALS['files'][$i]['loc'])) {
                header("Content-length: ".filesize($GLOBALS['files'][$i]['loc']));
                header("Content-type: ".mime_content_type($GLOBALS['files'][$i]['loc']));
                readfile($GLOBALS['files'][$i]['loc']);
            } else {
                print("Can't find that file!");
            }
        }

    }

}

?>
  

В get.php файл, я загружаю (из базы данных) информацию о файлах, к которым я хотел получить доступ, используя этот файл выше на сайте.

 $_SESSION['privs'] //it's an array that holds privileges, i.e: site.priv.mess
$GLOBALS['files'] //holds info about all files that user can load, i.e: $GLOBALS['files'][0]['name'] is a name of first file in array
$GLOBALS['files'][0]['loc'] //holds info about first file localisation
$GLOBALS['files']['ile'] // holds sizeof($GLOBALS['files'])
  

С изображениями это работает хорошо, но если я попытаюсь загрузить файл большего размера, то есть видео, которое весит 300 МБ, тогда файл загрузится, все выглядит хорошо, но если я перезагружу сайт, это больше не будет работать…
Я попытался удалить свои файлы cookie в браузере (чтобы изменить идентификатор сеанса), и это работает… Но что я могу сделать, чтобы это работало лучше?

РЕДАКТИРОВАТЬ: В Firefox все выглядит хорошо, зависает только в Chrome : (

ПРАВКА 2: Закрытие сеанса с помощью: session_write_close(); перед чтением файла исправлено мое проклятие: P Спасибо вам всем

Комментарии:

1. файлы, которые вы отправляете, слишком велики для вашего сервера.

Ответ №1:

Проверьте свой php.ini или используйте phpinfo() для проверки ваших значений для upload_max_filesize , post_max_size и memory_limit . Возможно, также проверьте максимальное время выполнения php-скрипта.

Комментарии:

1. у меня есть значения по умолчанию. Нужно ли мне изменить их, чтобы это заработало?

2. я изменил их, и теперь, когда я открываю этот файл в новой вкладке, сайт зависает на других вкладках (только по этому адресу, на других все еще работает). Похоже, что зависает только сессия

3. попробуйте с другим браузером, когда вы думаете, что это всего лишь приостановка сеанса. 🙂

4. да, вы можете использовать ini_set() для этого или изменить значения в php.ini напрямую. Может ли ваша интернет-пропускная способность обрабатывать данные? Или ваш сервер достаточно быстр, или вы тестируете его локально?

5. Я тестирую его и локально, и внешне. И я вижу, что это замораживает всю сессию при любом типе соединения. Но самое интересное, что я обнаружил, что при локальном подключении видео загружается нормально (все еще задержка сеанса), но при внешнем это у меня не сработает. Мой друг сказал, что на его компьютере все работает отлично. Итак, я не знаю, что теперь делать.