Очистить кеш на Facebook, используя cURL и lint - PullRequest
0 голосов
/ 25 января 2012

У меня проблема с размещением контента Facebook на моем сайте.В нем реализована кнопка «Мне нравится», но когда вам «нравится», изображение в вашем профиле Facebook показывается старое изображение (изображение в зашифрованном кэше).Вещи на этом веб-сайте работают следующим образом ... каждый день появляется новая фотография девушки дня, но адрес всегда один и тот же (переписан apache).

Я должен найти какой-то способавтоматически и периодически (когда на сайте устанавливается новое изображение) очищать кеш facebook.

Когда я помещаю URL-адрес, для которого я хочу обновить кеш, прямо в форме fb debug tool (lint) и нажимаю 'debug', он очищаетсякешировать и обновлять контент, когда кому-то нравится контент на моем сайте.

Но проблема в том, что я пытаюсь обновить кеш автоматически (через php скрипт или cron job).Что-то вроде этого не работает:

wget http://developers.facebook.com/tools/debug/og/object?q=http://www.vecernji.hr/djevojka-dana

или как это также не работает:

curl http://developers.facebook.com/tools/debug/og/object?q=http://www.vecernji.hr/djevojka-dana

Кроме того, PHP-скрипт не работает:

$url = "http://developers.facebook.com/tools/debug/og/object?q=http://www.vecernji.hr/djevojka-dana";
$useragent = "Opera/9.80 (X11; Linux x86_64; U; en) Presto/2.10.229 Version/11.60";

if ( $ch = curl_init( $url ) )
{
    curl_setopt( $ch , CURLOPT_HEADER , 0 );
    curl_setopt( $ch , CURLOPT_RETURNTRANSFER , true );
    curl_setopt( $ch , CURLOPT_USERAGENT , $useragent );

    $str_response = curl_exec( $ch );

    if( curl_errno( $ch ) != 0 )
    {
        $message = 'Girl of the day - cURL exec error: ' . $ch;

        error_log( $message );
    }

    curl_close( $ch );
}
else
{
    $message = 'Girl of the day - cURL init with url: ' . $url . ' failed';

    error_log( $message );
}

Содержимое для лайков находится на URL:

http://www.vecernji.hr/djevojka-dana и http://www.vecernji.hr/decko-dana

Кто-нибудь знает причину, по которой я не могу обновить кеш через php-скрипт, wget или curl,но когда я помещаю данный URL-адрес непосредственно и вручную в форму lint и нажимаю кнопку отправки, содержимое обновляется?

Ответы [ 3 ]

2 голосов
/ 07 июня 2012

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

В любом случае, следующая лучшая вещь, которую я мог сделать, чтобы сэкономить время, - это создать скрипт, который выводит ВСЕ ссылки на инструмент lint, который нуждается в обновлении. Затем я использовал такой инструмент, как Linky, чтобы открыть все ссылки одновременно. Бам, все тайники очищены.

Если вам нужно делать это один раз в день, я думаю, что это решение может стать немного болезненным, но это можно сделать за 5 секунд за чашкой кофе, а также делегировать кому-либо, поскольку это очень простая задача. Я уверен, что при необходимости вы можете получить скрипт, который автоматически открывает страницу вашего URL в определенное время, выбирает все и использует Linky. Должно быть проще, чем найти способ обойти неодобрение Facebook для CURL для этой задачи.

0 голосов
/ 13 ноября 2012

Вам необходимо добавить следующую строку:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

(Кредит Sidnicious: URL-адрес не работает с cURL )

0 голосов
/ 26 января 2012

Пожалуйста, смотрите ссылку на мой предыдущий ответ ниже для получения дополнительной информации о кешировании facebook:http://facebook.stackoverflow.com/a/9019926/558021

...