Ответы пользователя по тегу Веб-разработка
  • Как заставить cURL выдавать результат, а не выводить на экран?

    Iktash
    @Iktash Автор вопроса
    Уф. Попробовал предложенную функцию - работает. Пробую свою - не работает. Пол ночи думал, в чем тут дело и так и этак крутил, вроде все одинаково.
    Не знаю, что это за магия, но оказалось, что вот так работает:
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_FOLLOWLOCATION => true,


    в обратном порядке нет:
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_RETURNTRANSFER => true,


    Порядок других опций, вроде роли не играет. Что за магия такая не понятно. Притом, как я писал вначале на одном сервере и так и этак работает, а на другом вот такая штука.

    В итоге рабочая версия установки опций выглядит так:
    private function setOptions(){
            if(empty($this->options))
            {
                $this->options = array(
                        CURLOPT_AUTOREFERER => true,
                        CURLOPT_COOKIESESSION => false,
                        CURLOPT_HTTPGET => true,
                        CURLOPT_RETURNTRANSFER => true,
                        CURLOPT_FOLLOWLOCATION => true,
                        CURLOPT_BINARYTRANSFER => true,
                        CURLOPT_ENCODING => 'gzip,deflate,sdch',
                        CURLOPT_HTTPHEADER => array(
                                'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
                                'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3',
                                'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4',
                                'Cache-Control: max-age=0'
                        ),
                        CURLOPT_USERAGENT => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.75 Safari/535.7'
                );
                
                if($this->cookie){
                    $this->options[CURLOPT_COOKIEFILE] = "cookie.txt";
                    $this->options[CURLOPT_COOKIEJAR] = "cookie.txt";
                }
            }    
        }


    Может кто-нибудь обьяснит в чем тут фишка?
    Ответ написан
    Комментировать
  • Каким образом должны выводиться похожие новости/статьи/вопросы ?

    Если сайт еще на стадии разработки, то можно предположить, что статей много не будет. Значит можно проставлять связи руками на первых этапах. Такой подход, конечно, трудоемкий, но позволит администратору сайта хорошо контролировать потоки пользователей.
    А дальше, на мой взгляд, самый правильный вариант - отслеживать статьи, которые интересовали пользователей и показывать похожие, исходя из статистики посещений.
    Ответ написан
  • Скачиваем странички при помощи Curl, недочёты ?

    Сама идея запускать это в одном скрипте и ждать долго-долго плохая. Лучше написать в скрипте, допустим, 100 операций и запускать его по хрону. Не забыть, конечно, проверять, что процесс предыдущий уже завершился. Так мы снимаем с себя все проблемы с утечками памяти и прочими подобными проблемами. Правда, придется еще заморочится с тем, что бы запомнинать где мы остановились.
    Еще меня смущает такой список юзер-агентов. Если они нужны для того, что бы скрыть от админов сайта твои действия, то таких мер явно недостаточно. Я бы смотрел как минимум постарался добавить более реалистичную частотность появления юзер-агенов.
    Еще хочется добавить, что если ты не хочешь создавать проблем админам сайта, то стоит подумать над искусственными задержками. Твоя нагрузка может оказаться для них критичной.

    PS Я не знаю, как предполагается дальше работать с этими данными, но я не могу представить себе ситуацию, когда записывать все в файлики лучше, чем складывать аккуратно частями в базу. Под частями я имею ввиду некоторое логическое разделение хотя бы на текст и заголовок.
    Ответ написан