Клуб Яндекс.Поиска для сайта

Ошибка при попытке отправить пинг

Пытаюсь сделать пинг для сайта, отправляю через сокеты строку, а в ответ получаю такого рода массив:

Array(
    [0] => <empty-param>urls</empty-param>
    [1] => <empty-param>urls</empty-param>
)

Понятно, что переменная urls почему-то приходит в пинг пустой, но в строке она есть. Можно где-то подробнее почитать о том, какие ошибки при каких обстоятельствах возвращаются? Потому что мне не очень понятно, что это может значить: то ли переменая совсем пустая, то ли строка урла какая-то неправильная, то ли просто этот урл уже есть в пинге. Можно где-то увидеть, что было отправлено с моего сайта через пинг в реальном времени (какая строка пришла в яндекс и как ее яндекс обработал)? (маловероятно, но вдруг))

Заранее спасибо!

7 комментариев

Ошибка найдена. Я брала за основу код плагина под modx revo, который, очевидно, устарел. Он предлагает использовать код

$postdata = http_build_query(
        array(
            'key' => urlencode("ea72a87dec1cecdd67662ba974e866f065cd3135"),
            'login' => urlencode("mahonova-marya"),
            'search_id' => urlencode("2054976"),
            'urls' => urlencode($url)."%0A",
            'pluginid' => urlencode("5"),
            'cmsver' => urlencode("netcat"),
            'publishdate' => urlencode(date("r"))
        )
    );

    $host = 'site.yandex.ru';
    $length = strlen($postdata);

    $out = "POST /ping.xml HTTP/1.1\n";
    $out .= "HOST: " . $host . "\n";
    $out .= "Content-Type: application/x-www-form-urlencoded\n";
    $out .= "Content-Length: " . $length . "\n\n";
    $out .= $postdata . "\n\n";

А должно быть (как я теперь поняла)

$postdata = http_build_query(
        array(
            'urls' => $url
        )
    );
    $length = strlen($postdata);
    $out = "POST /ping.xml?key=bda2f69869da8f8f4f471b27e8457d0faee00b39&login=mahonova-marya&search_id=2054976 HTTP/1.1\n";
    $out .= "Content-type: application/x-www-form-urlencoded\n";
    $out .= "Host: site.yandex.ru\n";
    $out .= "Content-Length: ".$length."\n\n"; #размер urlencoded данных ниже
    $out .= $postdata . "\n\n";

 

Дмитрий Вульбрун
28 января 2016, 01:01
Скажите, пожалуйста, насколько я понял, у вас получилось разобраться?

Да, там был неправильный код в одном из модулей, которые можно скачать как примеры работающих.

Дмитрий Вульбрун
28 января 2016, 01:01

Но плагин для MODx при установке в MODx работает.

Мы на всякий случай проверим :)

Плагин сам рабочий (под revo), но пинг с этим кодом не отправляется (возвращает описанную вышу ошибку). В чем разница (какой код был, а какой стал) я написала. Вообще, там в модуле, насколько я видела, эта ошибка не обрабатывается. Т.е. он, вполне возможно, просто не сообщает пользователю о том, что происходит ошибка.

Дмитрий Вульбрун
28 января 2016, 01:01

Спасибо за разъяснения, обязательно проверим и исправим, как только будет возможность.

Так и не обновили плагин