За последние 24 часа нас посетили 20329 программистов и 1012 роботов. Сейчас ищут 373 программиста ...

Его величество Ajax

Тема в разделе "PHP для новичков", создана пользователем AlexProg, 1 ноя 2018.

Метки:
  1. AlexProg

    AlexProg Активный пользователь

    С нами с:
    13 май 2014
    Сообщения:
    320
    Симпатии:
    7
    Всем добра!

    Натолкните пожалуйста на мысль...

    Как выполнять Ajax по времени? setTimeout и прочее не подходит. Т.е. отсчет должен быть не от того когда пользователь на сайте, а допустим каждый час на сайте показывать информацию, посланную Ajax'ом или Cron'ом. Показали - убрали... показали - убрали... и т.д.

    Спасибо! :)
     
  2. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    setInterval?
     
  3. AlexProg

    AlexProg Активный пользователь

    С нами с:
    13 май 2014
    Сообщения:
    320
    Симпатии:
    7
    Думаю тоже нет. Т.к. это все клиентское.
    Нужно именно серверное решение. Т.е. есть кто на сайте или нет, все равно вывести блок и показать.
     
  4. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    @webog ну тогда только сокеты
     
  5. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Не тупите. AJAX – это клиент-серверная технология, в которой инициатором выступает клиент.
    --- Добавлено ---
    Естественно, это предназначалось ТСу.
     
  6. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Если нужно точно в начале часа просто первый раз считаешь сколько времени осталось до события (можно в пыхе) ставишь timeout делаешь событие плюс в нем же запускаешь интервал.
     
    KRU нравится это.
  7. AlexProg

    AlexProg Активный пользователь

    С нами с:
    13 май 2014
    Сообщения:
    320
    Симпатии:
    7
    Получается клиент должен быть на сайте!?
     
  8. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    @webog Так тебе просто крон нужен? Мухи отдельно котлеты отдельно. Можно системный использовать. Можно на ноде написать. Сними он бесплатный сервер в гугла и дергай хостинг когда нужно.
     
    AlexProg нравится это.
  9. AlexProg

    AlexProg Активный пользователь

    С нами с:
    13 май 2014
    Сообщения:
    320
    Симпатии:
    7
    @nospiou
    Можно пример? Или гугель ссылку :)
     
  10. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    @webog бесплатного сервера? или чего? https://cloud.google.com/free/ только смотри какой бесплатный us 0.6gb 30gb навсегда плюс 300 долларов в подарок на первый год для тестов. Нужно только карту ввести с долларом на счету.
    --- Добавлено ---
    Когда выдают хостинг там в панели инструментов всегда есть крон
     
    AlexProg нравится это.
  11. AlexProg

    AlexProg Активный пользователь

    С нами с:
    13 май 2014
    Сообщения:
    320
    Симпатии:
    7
    @nospiou Спасибо! Я имел ввиду пример кода.
    --- Добавлено ---
    Хостинг есть, у меня VPS. Нода там есть.
     
  12. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Я бы системный не использовал. Приложения нужно изолировать. А вот нода это да.
    https://github.com/kelektiv/node-cron
    Плюс менеджер для мониторинга перезагрузки в случаи чего и т.д
    https://github.com/Unitech/pm2
    --- Добавлено ---
    Ну и если нужно системный скрипт выполнить
    https://nodejs.org/api/child_process.html
     
    AlexProg нравится это.
  13. lastdays

    lastdays Активный пользователь

    С нами с:
    27 сен 2012
    Сообщения:
    410
    Симпатии:
    74
    Как выполнять Ajax по времени? setTimeout и прочее не подходит.

    Почему это не подходит? вполне себе выполняет поставленную задачу.. Тебе бублики или пирожки?
     
  14. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    setIterval проверяешь сколько сейчас времени и делаешь свои черные делишки, если минуты 00.
    --- Добавлено ---
    можно сервак дергать, но я бы не стал. Думаю, клиентского времени достаточно.
     
  15. AlexProg

    AlexProg Активный пользователь

    С нами с:
    13 май 2014
    Сообщения:
    320
    Симпатии:
    7
    Допустим показываем с интервалом от 1 до 2-х часов. Пользователь зашел на 30 мин и вышел, счетчик не дошел до часа. второй зашел на 50 минут и вышел и т.д. Т.е. клиентская часть не катит...
    В общем пришлось юзать сокет, НО сокет не на всех хостингах есть... Вот думаю что делать!?.
     
  16. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    @lastdays, очевидно, ТС'у надо не "показывать клиенту каждый час" определённую информацию, а каждый час определяться с информацией, которая будет показана клиентам, если те зайдут на сайт в этот самый интервал (час) :cool:
    --- Добавлено ---
    Крон и его инкарнации, как рекомендовал @nospiou.
     
  17. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    Если эта инфа индивидуальная для каждого пользователя, то кроме сокетов только longg/short polling. А ты что, универсальный продукт разрабатываешь, который будет скачиваться юзверями и ставиться у себя? Почему тебе не по барабану, есть ли сокеты на шаредах?
     
  18. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    @webog, а ещё можно просто один раз сформировать "таблицу" с интервалами и информацией о контенте и просто с ней сверяться при решении, что отдавать в "том блоке". Будь то при первом заходе на сайт или по истечении таймаута.