Задать вопрос
Ответы пользователя по тегу HTML
  • PHP как передавать POST большие файлы быстро?

    @mantyr
    Пишу много Golang кода с удовольствием:)
    Что бы не упираться в ограничения:
    • разбивать файл на чанки равной длины
    • загружать чанки параллельно на несколько разных суб.доменов (st1.example.com, st2.example.com ... stN.example.com)
    • использовать http2 соединение
    • передавать файлы (и чанки в том числе) в бинарном виде


    Если количество входных точек меньше чем количество чанков то на некоторые адреса будет несколько отправлений, желательно не переустанавливать соединение, а держать хотя бы keep-alive, а ещё лучше разобраться как передать данные после текущей отправки в текущее соединение.

    Замерять скорость:
    • сети между серверами и клиентом
    • пропускную способность веб-сервера
    • общую нагрузку на сервер
    • io диска куда складываются данные


    Возможно есть проблема:
    • со скоростью работы диска, может быть он сбоит и потерял 80% своей скорости
    • с загрузкой канала между сервером и клиентом
    • слишком много запросов к веб-серверу и он просто блокируется постоянно
    • браузер перегружен плагинами или слишком много js кода который убивает отзывчивость


    Так же попробуйте отправить файл на другой сервер похожим образом и сравнить.

    Более подробно про отправку файла чанками:
    sendFile: function(file) {
                if (file.size > this.maxFileSize) {
                    this.alert('Файл слишком большой!');
                    return false;
                }
    
                var fd = new FormData();
                      fd.append("file", file);
    
                // Создаем запрос
                var xhr = new XMLHttpRequest();
                xhr.upload.addEventListener('progress', context({obj: this}, this.uploadProgress), false);
                xhr.onreadystatechange = context({obj: this, html: html}, obj.uploadFinish);
                xhr.open('POST', this.handler);
                xhr.send(fd);
            },


    Тут мы видим xhr.send(fd), теперь идём в один из примеров, например https://learn.javascript.ru/xhr-resume и видим вариант с отправкой части файла:
    var slice = file.slice(10, 100); // прочитать байты с 10-го по 99-й включительно
    xhr.send(slice); // ... и отправить эти байты в запросе.


    Если у вас получится сделать механизм многопоточной загрузки то можете контрибьютить в этот репозитарий: https://github.com/mantyr/js-drag-n-drop-file-uplo... так как он чуть более объектный чем классический dropzone
    Ответ написан
    2 комментария
  • Как бы вы организовали кодогенерацию сайта?

    @mantyr
    Пишу много Golang кода с удовольствием:)
    Берите уже PHP, что уж там:)
    Ответ написан
  • С чего начать программирование?

    @mantyr
    Пишу много Golang кода с удовольствием:)
    Запишись на курсы в школе, там будет Borland/Turbo Pascal и много аглоритмов... ну или Си/Си++ и опять таки много алгоритмических задачек. Но если хочешь быть странным и продвинутым школьником - начни с golang.org и изучения английского.
    Ответ написан
  • Скрипт удаления картинок старше 2 дней с сервера это возможно на php?

    @mantyr
    Пишу много Golang кода с удовольствием:)
    Давайте попробуем разобраться.
    1. вам нужно научиться удалять конкретный файл по конкретному адресу
    2. вам нужно научиться получать список файлов конкретного каталога
    3. вам нужно научиться либо проверять конкретный адрес файла на дату создания файла и выбирать те что старше 2 дней либо научиться в пункте 2 получать список только тех файлов которые уже старше 2 дней
    4. вам нужно научиться запускать скрипт каждую неделю через cron

    Вот когда пройдётесь по этому списку, подтяните знания тогда всё и получится.
    Ответ написан
    1 комментарий