Ответы пользователя по тегу PHP
  • Прогресс выполнения 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
    • Требует постоянного опроса сервера, хоть нагрузка и небольшая от них, но все таки нагрузка
    • Вопрос с хранением результатов остается открытым для очень больших запросов и при высокой нагрузке
    Ответ написан
    Комментировать
  • Как в iframe приложении сделать бд?

    @Fellowship
    Есть вариант передать из сайта данные в iframe. Называется postMessage. Вот ссылка на документацию https://developer.mozilla.org/en-US/docs/Web/API/W...

    После того как вы получите в iframe необходимую информацию можете манипулировать ей как хотите через js.

    Связь двухстороняя, можно как отправлять, так и получать данные и внутри и вне фрейма
    Ответ написан
    Комментировать
  • В конструктор не приходит переменная, как исправить?

    @Fellowship
    Скорее всего ошибка в другом месте кода как указал 27cm или почему-то $register->getDb() может отдавать объект только один раз.

    Оффтоп: прочитайте про SIngleton, и вообще лучше работу с базой обернуть в статичные методы. Это позволит в дальнейшем облегчить работу с базой и не гонять каждый раз в каждый объект ссылку на объект БД.
    Ответ написан