PHP и удаленный URL-вызов - PullRequest
0 голосов
/ 11 января 2012

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

Что мне нравится делать, так это сделать этот скрипт способным взаимодействовать с моим сервером (просто вызывать определенный URL-адрес моего сервера)в любом виде конфигурации PHP и возможностей сервера.

Вот мой код:

ini_set("allow_url_fopen", 1);

$d = array('key1' => 'val1', 'key2' => 'val2');
$data = urlencode(serialize($d));

$f = fopen('http://www.my-site.ext/getdata/' . $data . '/', 'r');
if(!$f)
{
    $ch = curl_init();

    if($ch != false)
    {
        curl_setopt($ch, CURLOPT_URL, 'http://www.my-site.ext/getdata/' . $data . '/');
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $contents = curl_exec ($ch);
        curl_close ($ch);
    }
    else
    {
        // IS THERE ANY OTHER METHOD TO TEST IN CASE
        // THE FOPEN AND THE CURL NOT WORK ?
    }
}
else
{
    fclose($f);
}

Итак, вопрос в том, можно ли использовать какой-либо другой метод, если fopen и cURL неработа на конкретном хосте?

Ответы [ 2 ]

1 голос
/ 11 января 2012

Вы можете использовать file_get_contents(), так как он по-прежнему отправляет запрос на получение. Однако для fopen и fsockopen по-прежнему требуется allow_url_fopen.

Если на сервере включен безопасный режим, вы не сможете выполнить какую-либо сетевую транзакцию. Peradventure, который вы используете getcontents, использует unset() после вызова свободных ресурсов, чтобы не снижать производительность.

1 голос
/ 11 января 2012

Можно выполнить запрос вручную через fsockopen и написать базовый клиент HTTP 1.0 для выполнения запроса, но если обертки URL fopen отключены, вы, вероятно, обнаружите, что fsockopen также отключен.

...