• Как ускорить процесс загрузки файлов в PHP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Скорость канала на сервере — 200 Мбит/с
    Вангую что это скорость на выход, на вход будет совершенно другая скорость, не указанная в рекламном буклете, или написанная где-то под звездочкой оооочень мелким шрифтом.
    Есть вероятность что в вебсервере стоит ограничение на скорость загрузки на клиента, но это можно выяснить и через просмотр конфигов, если таковые доступны.

    Что делать?
    1) Пнуть провайдера и спросить про скорость аплоуда.
    2) Если молчат - проверить самостоятельно, например замерить скорость загрузки файла курлом.
    3) Проверить загрузку через фтп/сфтп
    4) Много думать, ругаться с провайдером
    5) Профит
    Ответ написан
    Комментировать
  • Как отображать данные всем после ajax запроса?

    Newto
    @Newto
    Если я правильно понял задачу, то в хотите сделать что-то типа чата. Когда каждый новый пользователь зашедший на страницу отобразится, допустим, в некоем списке. Эта задача решается ТОЛЬКО по средствам веб-сокетов.

    Однако, можно(но не нужно) сделать и иначе(просто для примера). Без сокетов это выглядело бы так, описываю пошагово:
    1. Пользователь заходит на страницу.
    2. Скрипт, который срабатывает после перезагрузки страницы, отправляет запрос аяксом к скрипту, который записывает id пользователя и время его захода в базу данных.
    3) Еще один скрипт, который "стучит" на бэк раз в, скажем, 5 секунд, обновляет список зашедших по логике "если есть id в базе и запись создана не более чем три минуты назад, то отображать пользователя онлайн". Этот скрипт получает таких пользователей и вы имеете отображаемый список.

    Подчеркну, такой подход имеет смысл только в целях самообучения, ради понимания очерёдности действий. Если же реализовывать его в реальных проектах, то это приведёт к перегрузке используемых серверных ресурсов.
    Ответ написан
    2 комментария
  • Как сделать таймер на php и js?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Согласен с dollar отчасти, но попробую дать направление.

    Для старта таймера делается некий запрос, например переход на страницу start_timer.php
    Здесь скрипт берет текущее время, прибавляет к нему необходимый интервал, например пять минут, записывает новое время куда-нибудь, например в базу данных.
    Далее пользователь отправляется на скрипт ожидания wait_timer.php
    Этот скрипт берет текущее время и время из базы, вычисляет разницу, если она положительная, то формирует html страницу с javascript таймером, передавая туда вычисленную разницу - это время, которое осталось до окончания работы таймера. Джаваскрипт таймер начинает тикать. Когда дойдет до конца, он сделает обновление страницы. Скрипт wait_timer.php снова проверит оставшийся интервал, если он стал нулевым или отрицательным, отправит пользователя на третью страницу end_timer.php. Если разница все еще положительная, скрипт wait_timer.php так же сформирует страницу с js таймером и отдаст ее.

    Разделение скриптов на start, wait и end - условное. Это вполне может быть один и тот же скрипт (страница), просто где-то на сервере, сохраняется состояние для текущего пользователя, что его таймер уже запущен, или наоборот еще не запущен.

    В таком простом варианте не учитывается разница времени из-за длительности http-запроса, поэтому, если нужна миллисекундная точность, то нужно будет применить дополнительные методы синхронизации.
    Ответ написан
    Комментировать
  • Почему структура Golang работает не корректно при подключение в другом файле?

    includedlibrary
    @includedlibrary
    Потому что это приватное поле. Приватные поля начинаются с маленькой буквы, публичные - с большой. В рамках пакета вы можете обращаться к приватным полям структур этого пакета, но в других пакетах не можете этого делать
    Ответ написан
    Комментировать
  • Почему это условие не работает?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Условие срабатывает как и положено.

    Писать что-то в массив $_POST не имеет смысла, он будет всегда создан новым при следующем запросе.
    Точно так же между запросами не сохраняются переменные. И получается, что вы каждый раз сбрасываете счетчик в ноль, а тут же увеличиваете его до единички.

    Данные между запросами можно хранить в сессии.

    session_start();
    $num = $_SESSION['num'] ?? 0;
    $num++;
    
    $_SESSION['num'] = $num;

    Или передавать через ту же форму

    $num = (int)($_POST['num'] ?? 0));
    $num++;
    
    <input type="hidden" name="num" value="<?=$num?>">
    Ответ написан
    Комментировать
  • Как вывести данные из массива в сообщение?

    Vindicar
    @Vindicar
    RTFM!
    for product in select_db():
        @dp.callback_query_handler(text=product['name_but'])
        async def pole(message: types.message):
            await bot.send_message(message.from_user.id, product['desk'], reply_markup=but.nav_button)

    Ты делаешь глупость.
    Просто потому, что после того, как этот код отработает, созданные тобой копии обработчика pole() останутся, и будут мешать.
    Используй один, более общий обработчик callback_query_handler, и в нём уже смотри, какой текст тебе пришёл, какой пользователь его отправил, и что с этим текстом надо делать.
    Ответ написан
    1 комментарий
  • Как вывести данные массива в сообщение бота?

    Wispik
    @Wispik
    Потому что ты каждый раз заново создаешь меню
    buket_menu = InlineKeyboardMarkup(row_width=1)
    надо поставить перед циклом
    Ответ написан
    1 комментарий