Подскажите код получения ответа сервера

Тема в разделе "Thunder 3.X", создана пользователем ddn128, 26 апр 2017.

  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Приветствую. В всязи с ситуацией на рынке валют, демпнгую))

    Всего 7 дней скидка 30% "для своих":

    Из Новостей на 13 августа 2018, у меня:

    Бесплатный дорген AttoGen

    MassSiteProxy 1х. Скриипт массового копирования сайтов > MassSiteProxy 1.06. Куча новых Фишек

    CPA GEN 1х. Скрипт генерации белых дорвеев подарю 2 красивых шаблона новым клиентам

    Thunder 3.x Генератор дорвеев > Новые отзывы

    Скрипт безлимитного переводчика

    Скрипт купонного сайта на Wordpress

    Промо коды пачка на Всех))) Действительны всего 7 дней.

    E6696751CFD64F82
    23B34C0DFD234071
    494676AF930746E2
    61333A5E926F4AF2
    A2C5D28D9E1647E2
    3177B1018BF244ED
    A0027E48A18045D5
    33247242204D4BC0
    CF432FC5AE894BBA
    DE80241C027B44DB
    F4346CBB0AE94C14
    A10DAB0667844775

    Большая просьба, написать, кто какой ипользовал

    Партнерская программа для блогеров-дорвейщиков - до 30% с продажи.

  1. ddn128

    ddn128 Опытный Пользователь

    31 дек 2015
    509
    233
    Мужской
    Собственно есть
    Код:
    <?php
    
    $url = 'http://ya.ru';
    $headers = get_headers($url);
    
    echo substr($headers[0], 9, 3);
    ?>
    
    Т.е. проверяем лик и получаем ответ сервера.
    В шабе такое
    Код:
    {%  set response = php_get_headers(url) %}
    не работает :(
    Собственно как эту ф-цию оформить в плагин? Чё-то мне не хватает моска
    Или мож. есть другое решение?

    P.S. Зачем это? Например при кешировании картинок, если картинка битая, то получим всеми любимый
    " Slim Application Error "
    а так, зная ответ заранее, можем либо подставить другую картинку, либо не кешировать, либо ... - стр. сгенерится.
    ХЗ, мож и с таймаут CURL так можно будет победить. А может и нед.
     
  2. Art

    Art Участник

    23 фев 2017
    28
    9
    Мужской
    php\html\css developer
    Вобще интересная мысль проверять перед загрузкой.
    Если что-то сделаю номральное отпишусь.
    Пока мне хватает, того что сделал небольшой fix фунции кеширования изображений:

    PHP:
    $url_arr preg_split('/[\?#]/'$url);
    $info = new SplFileInfo($url_arr[0]);
    Заметил что ссылки на изображения иногда приходять, типа:
    image.jpg?bla=bla
    image.jpg#bla

    и я их предварительно разделяю по этим знакам (#,?), чтобы ошибка не выскакивала.

    А Curl разве из-за битых ссылок выскакивает? С локалки тестишь или с сервера?
     
  3. ddn128

    ddn128 Опытный Пользователь

    31 дек 2015
    509
    233
    Мужской
    #3 ddn128, 26 апр 2017
    Последнее редактирование: 26 апр 2017
    я чищу регуляркой

    Код:
    {% set patterns_i = ['/\\.jpg.*/','/\\.jpeg.*/','/\\.png.*/','/\\.gif.*/' ] %}
    {% set replacements_i = ['.jpg','.jpeg','.png','.gif'] %}
    {% set img_rpl_h = php_preg_replace(patterns_i,replacements_i,post_images[0]) %}
    
    нет, но там же явно не 200 приходит (подозреваю 500) ещё не отлавливал, вот этот ответ думаю (в теории) можно отловить и отослать запрос ещё раз или взять др. ПС или не вывести без парсинга - кому как.
    Да, долго, но зато стр. сгенерится
     
  4. Art

    Art Участник

    23 фев 2017
    28
    9
    Мужской
    php\html\css developer
    Ок, норм вариант.

    Сейчас попробовал у себя на первом баннере с яндекса:
    Код:
    {%  set response = php_get_headers('https://awaps.yandex.net/0/c1/tx21lszVAoU5vGvVMTT5HdeOV1qDKWHxMRU7tbdyzVD-oRt4SwT6mrHeS97Hv_tv6T-AvcjIjDS99mUT-z+YpPAtsGLpfQwJSsbHqq2+0fwwNQvEZ-NhxJUyisP_tobp2kt9IQSXxlekB4DGbD9K0NRe3JBZSvDxcTzyxtxC+CicWowIJQ5pjM+Za_tkwy9CB3tmMruKe4gNh+vkc2hJkMmfFqgb-wzEDKRYA5HChiaTOB+0EwRawn+_tRWN7O207OPINGLsAWAqKiaJI8TqYv8hs0kWyfD0KGuWQZof0UAEh9hFwrQzu_tVczaU0oyrlVzU+jNJehf0rx8EVf3S9yLGAu6uwZ4mbPgGxMmDb5EpOUDlJrq_t4dGafKjDLbImks08957OrlqREF31-NyZxaLy3O4NhFRccEegEhqY9F6PfDpl_VWdNA9ktgbkMb2Q4CEn++RKI6Asq4_A_.gif') %}
    {{ php_print_r(response) }}
    
    В ответ получил такое:
    Код:
    Array
    (
        [0] => HTTP/1.1 200 OK
        [1] => Server: nginx
        [2] => Date: Wed, 26 Apr 2017 15:26:07 GMT
        [3] => Content-Type: image/png
        [4] => Content-Length: 10060
        [5] => Connection: close
        [6] => Cache-Control: no-cache, no-store, must-revalidate, max-age=5
        [7] => P3P: CP="NOI DEVa TAIa OUR BUS UNI STA"
        [8] => Access-Control-Allow-Credentials: true
        [9] => Accept-Ranges: bytes
    )
    1

    А у тебя вобще не работает или не работает только с битыми ссылками?
     
    ddn128 нравится это.
  5. ddn128

    ddn128 Опытный Пользователь

    31 дек 2015
    509
    233
    Мужской
    точно, на серваке робит. А на локалке скотина не хочет :(
     
  6. Art

    Art Участник

    23 фев 2017
    28
    9
    Мужской
    php\html\css developer
    Ну да, у меня на локалке тоже иногда Curl timeout при загрузке изображений выскакивает.
     
  7. ddn128

    ddn128 Опытный Пользователь

    31 дек 2015
    509
    233
    Мужской
    Угу. Раньше всегда работал напрямую с серв., пока "тру" прогр. не начали чмырить :) - типо нафига, если можно на локалке - а вот фигушки, оказывается - возвращаюсь на серв.
     
  8. Art

    Art Участник

    23 фев 2017
    28
    9
    Мужской
    php\html\css developer
    #8 Art, 20 июн 2017
    Последнее редактирование: 20 июн 2017
    ...
     
  9. Art

    Art Участник

    23 фев 2017
    28
    9
    Мужской
    php\html\css developer
    Сорри, плохо протестил.) Оказалось, не работает с этим параметром. Я лучше затру прошлое сообщение.
     
  10. Art

    Art Участник

    23 фев 2017
    28
    9
    Мужской
    php\html\css developer
    Нашлось банальное решение, чтобы не ловить ошибку Curl :

    Код:
            $options = array(
                'follow_redirects' => true,
                'useragent'=>'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.71 Safari/537.36',
                'cookies' => $this->container['cookie']
            );
            try {
    
                $response = Requests::get($url,array(), $options);
    
                if($response->success === false){
    
                    return null;
                }
    
            } catch (Requests_Exception $e) {
    
                return null;
            }
    
    т.е. если вдруг бан по ip и еще что-то , то просто отдаст null , а не ошибку :)
    кстати ютуб меня начал банить, когда много обращений с одной ip
     
    ddn128 нравится это.
  11. Glokken

    Glokken Участник

    26 окт 2015
    144
    32
    Мужской
    А куда все это пихать??? Как использовать? Для чайников, плиз! :)
     
    heyner нравится это.
  12. Art

    Art Участник

    23 фев 2017
    28
    9
    Мужской
    php\html\css developer
    Это нужно в плагинах поискать вот эту строчку:
    Код:
    $response = Requests::get($url,array(), $options);
    и просто обернуть ее в try catch:
    Код:
    try {
    
                $response = Requests::get($url,array(), $options);
    
                if($response->success === false){
    
                    return null;
                }
    
            } catch (Requests_Exception $e) {
    
                return null;
            }
     

Поделиться этой страницей