PHP функция curl_exec () замедляет мой скрипт - PullRequest
2 голосов
/ 05 октября 2010

Я использую следующую функцию в CodeIgniter, чтобы получить мой последний твит:

function tweet($id) {

        $c = curl_init();
        curl_setopt($c, CURLOPT_URL, "http://twitter.com/statuses/user_timeline/".$id.".xml?count=1");

        curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);

        //Benchmark starts here
        $src = curl_exec($c);
        //Benchmark ends here

        curl_close($c);

        preg_match('/<text>(.*)<\/text>/', $src, $t);
        $data['tweet'] = htmlentities($t[1]);
        preg_match('/<created_at>(.*)<\/created_at>/', $src, $c);
        $created = $c[1];

        // explode $created so we can process it
        $created_array = explode(' ',$created);
        $time = $created_array[3];
        $time_array = explode(':',$time);
        $format = '%b/%d/%Y %H:%M';
        $date_to_format = $created_array[1].'/'.$created_array[2].'/'.$created_array[5].' '.$time_array[0].':'.$time_array[1];
        $date_time = strptime($date_to_format,$format);
        $created_timestamp = mktime($date_time['tm_hour'], $date_time['tm_min'], 0, $date_time['tm_mon']+1, $date_time['tm_mday'], $date_time['tm_year']+1900);
        $time_diff = time() - $created_timestamp;

        $data['time'] = time_since($time_diff);

        return $data;

    }

Я использую класс CI Benchmark, чтобы понять, почему веб-сайт так долго реагирует, и обнаружил, что строка

 $src = curl_exec($c);

выполняется более 5 секунд. Может кто-нибудь сказать мне, почему это происходит?

Ответы [ 2 ]

2 голосов
/ 05 октября 2010

Попробуйте просто сделать это с file_get_contents.

http://philsturgeon.co.uk/news/2009/07/How-to-Create-a-Twitter-feed-with-full-syntax-support

1 голос
/ 05 октября 2010

Я только что проверил ваш код на моей машине (только запрос curl), и никаких проблем нет ... Он быстро получает данные: 349 мс.

Может ли быть проблема в вашей сети? Или, может быть, у Твиттера был момент, когда вы проверяли свой запрос? В прошлый раз, когда я пытался поиграть с Twitter API, весь сайт не работал, поэтому, возможно, у них тоже были проблемы.

Удачи

...