Задать вопрос
Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (1)

Наибольший вклад в теги

Все теги (10)

Лучшие ответы пользователя

Все ответы (11)
  • Прогресс выполнения php foreach в ajax запросе?

    @Fellowship
    Все варианты, предложенные здесь подразумевают установку дополнительного ПО или использования иных технологий.

    Но на самом деле можно обойтись и без них.

    Смотрите.
    У Laravel есть замечательный механизм кронджобов. Используйте его в связке с mysql.

    Допустим у нас есть таблица с тасками для выполнения в фоне с 4мя полями
    id, task, progress, result
    (я уже правда не помню структуру таблицы laravel у кроновых тасков)

    И ajax запрос первый будет лишь командой на вставку новой задачи, который на js возвращает лишь id таска.

    Далее на клиенте реализовываем второй запрос - проверка статуса. Сам запрос просто запрашивает из базы значение поля progress из базы, а Js, например, рисует красивый прогресс. И пускай он с интервалом раз в секунду или несколько секунд (в зависимости от задачи) опрашивает сервер.

    Далее реализовываем третий запрос - получение результата. Как только на второй запрос получили ответ, что таск выполнен на 100%, отправляем запрос на получение результата который берет его из базы (или из redis, или из сессии, короче из любого хранилища. Если сайт не нагружен можно и в базе хранить в сериализованном виде).

    А сам соответственно таск пускает выполняется себе в фоне и никого не трогает. Если это vds или dedicated то на такие процессы вообще можно поставить ограничения и по памяти и по нагрузки на проц, или вообще вынести на отдельный docker или виртуальный контейнер. Короче, поле для деятельности масса.

    Плюсы такого варианта:
    • не нужно использовать современные технологии типа websoket (по их незнанию или по нежеланию или просто отсутствию возможности)
    • Поддержка браузеров явно больше чем у WebSocket (wikipedia)
    • достаточно использовать только встроенные технологии laravel
    • не требует сторонних библиотек


    Минусы данного подхода:
    • Все таки действительно 21 век на носу и можно уже изучить WebSocket
    • Требует постоянного опроса сервера, хоть нагрузка и небольшая от них, но все таки нагрузка
    • Вопрос с хранением результатов остается открытым для очень больших запросов и при высокой нагрузке
    Ответ написан
    Комментировать
  • Каков секрет правильного ajax?

    @Fellowship
    Очень понравился вариант от DarkHole, но я бы вам на сервере, еще посоветовал, изучить GULP и просто миницифировать и собрать все css и js скрипты в один.
    Пользователь, зайдя на страницу всего лишь один раз скачает все CSS и JS, а вы дальше по варианту DarkHole просто подмените body.

    Это не самый лучший способ для очень крупных и разносторонних сайтов, но для небольших сайтов, где пользователь пройдя по 3-5 страниц и так скачает 80% всех стилей и скриптов, это просто сэкономит и вам время разработки и внешне сайт будет открываться быстрее, так как все уже будет лежать в кеше.
    Ответ написан
    2 комментария
  • Циклическая переадресация при запуске laravel/public?

    @Fellowship
    Пожалуйста представьте виртуальный роут апача или конфигурации nginx (смотря что у вас там).

    Также .htaccess ларавалелла не меняли? Mod_rewrite включён?

    И также роуты laravel было бы не плохо увидеть
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (3)