За последние 24 часа нас посетили 30540 программистов и 1802 робота. Сейчас ищут 845 программистов ...

Проблема с iframe

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

  1. MRSgiba

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

    С нами с:
    22 дек 2017
    Сообщения:
    200
    Симпатии:
    32
    Возникла проблема следующего содержания:
    На сайте законадательно необходимо разместить банер в формате <iframe src="СайтПериодическиНедоступен">
    Когда этот СПН периодически недоступен, то и мой сайт периодически недоступен.
    Если есть известные решения кроме убрать или не размещать баннер напишите.
     
  2. Walk

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

    С нами с:
    7 сен 2008
    Сообщения:
    452
    Симпатии:
    86
    Делать запрос к сайту через cURL, если все ок - формировать код с iframe, если нет - то какое-нибудь предупреждение "сайт x сейчас недоступен"
     
    MRSgiba нравится это.
  3. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    как вам это удалось?
     
  4. MRSgiba

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

    С нами с:
    22 дек 2017
    Сообщения:
    200
    Симпатии:
    32
    не понял вопроса. С cURL все еще сложнее будет. Ситуация такая обязуют на все мед. учереждения вешать банер одного минздравовского ресурса, на все страницы своего сайта. Я так понимаю что каждый посетитель любой страницы сайта мед. уч. заставляет формировать запрос к этому ресурсу, и он ложиться? Соответственно если делать с CURL всем то запросов будет в два раза больше. Объясните если я не прав
     
  5. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    @MRSgiba, iframe - он ведь сам посебе - асинхронный. То есть, не должен замедлять загрузку сайта, тем более - делать его недоступным.
    Вот отсюда и вопрос: каким хитрым способом этот iframe встраивается, раз уж влечёт за собой такие проблемы?
    Или дело в чём-то другом?
     
  6. MRSgiba

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

    С нами с:
    22 дек 2017
    Сообщения:
    200
    Симпатии:
    32
    Сайт на Bitrix, в нужное место шаблона вставляю код
    Код (Text):
    1. <iframe src="https://nok.rosminzdrav.ru/......" border="0" scrolling="no" allowtransparency="true" width="300" height="200" style="border: 0;"></iframe>
    Когда у них сайт доступен все нормально, когда у них лежит он уменя крутит и крутит, банер убираю все работает
     
  7. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    @MRSgiba Идея в любом случаи плохая и лучше от фрейма отказаться но можешь через js загружать window.onload или попробуй в самом фрейме <iframe onload=>
     
  8. MRSgiba

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

    С нами с:
    22 дек 2017
    Сообщения:
    200
    Симпатии:
    32
    через window.onload пробовал эффект тотже
     
  9. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    @MRSgiba да быть такого не может. Ну создай функцию и запусти ее в самом конце html
    Код (Text):
    1.   $(window).load(function() {
    2.     var f = document.createElement('iframe');
    3.     f.src = url;
    4.     f.width = 1000;
    5.     f.height = 500;
    6.     $('body').append(f);
    7.   });
    есть еще $( document ).ready() там точно все запустится когда страница будет готова
     
    #9 nospiou, 8 ноя 2018
    Последнее редактирование: 8 ноя 2018
    MRSgiba нравится это.
  10. MRSgiba

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

    С нами с:
    22 дек 2017
    Сообщения:
    200
    Симпатии:
    32
    А сорян, не так делал, ща попробую так
     
  11. MRSgiba

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

    С нами с:
    22 дек 2017
    Сообщения:
    200
    Симпатии:
    32
    Ну отработало, но пока и тот сайт работает, подождем посмотрим, спс всем за помощь
     
  12. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    @MRSgiba ну подставь не рабочий сайт для проверки
     
  13. MRSgiba

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

    С нами с:
    22 дек 2017
    Сообщения:
    200
    Симпатии:
    32
    Браузер и у меня и у них пишет ожадание ответа от nok.rosminzdrav.ru, в итоге очень долго крутил, но отдал, внутри i-frame суб-фрейм Соединение сброшено, но ждал секунд 30, может минуту
     
    #13 MRSgiba, 8 ноя 2018
    Последнее редактирование: 8 ноя 2018
  14. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    ну если ты о спинере в табе... сделай в document.ready + еще timeout что бы уж точно грузить начал только после того как страница полностью загрузиться. Кто его знает как эти старые технологии работают)
    --- Добавлено ---
    Как вариант https://stackoverflow.com/questions/17759103/iframe-loading-time-limit-use-javascript
     
    MRSgiba нравится это.
  15. MRSgiba

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

    С нами с:
    22 дек 2017
    Сообщения:
    200
    Симпатии:
    32
    Спасибо всем, кто участвовал в данной теме, разобрался. В битриксе в дефолтной теме есть спиннер js-овый, который скрывает страницу до полной загрузки. Он пропадает благодаря добавлению класса в window.onload, так как iframe не доступен, он не дает завершиться и window.onload не срабатывает. Добавил скрипт после добавления класса и все решилось.
    Остался только один вопрос: если на 500 сайтов поставить баннер iframe и при 100 одновременных посетителях, их сервак получит 100*500 запросов? Я правильно понимаю?
     
  16. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    @MRSgiba Это да. Потому таким никто и не пользуется. Сайты делают api по которым ты можешь получить информацию. Закешировать ее и т.д. Тут лучше тоже кэшировать. Скриптом по крону обновлять.