Как я заставляю асинхронное ПОЛУЧИТЬ запрос в PHP?

Вы можете попробовать использовать опцию --path =, чтобы определить конкретную подпапку, которую вы хотите выполнить, и поместить туда конкретные миграции.

В качестве альтернативы вам необходимо удалить ссылки и таблицы из БД и таблиц миграции, что не идеально: /

94
задан Peter O. 10 December 2011 в 20:41
поделиться

6 ответов

file_get_contents будет делать то, что вы хотите

$output = file_get_contents('http://www.example.com/');
echo $output;

Изменить: один из способов запустить запрос GET и немедленно вернуться.

Цитируется из http: // petewarden. typepad.com/searchbrowser/2008/06/how-to-post-an.html

function curl_post_async($url, $params)
{
    foreach ($params as $key => &$val) {
      if (is_array($val)) $val = implode(',', $val);
        $post_params[] = $key.'='.urlencode($val);
    }
    $post_string = implode('&', $post_params);

    $parts=parse_url($url);

    $fp = fsockopen($parts['host'],
        isset($parts['port'])?$parts['port']:80,
        $errno, $errstr, 30);

    $out = "POST ".$parts['path']." HTTP/1.1\r\n";
    $out.= "Host: ".$parts['host']."\r\n";
    $out.= "Content-Type: application/x-www-form-urlencoded\r\n";
    $out.= "Content-Length: ".strlen($post_string)."\r\n";
    $out.= "Connection: Close\r\n\r\n";
    if (isset($post_string)) $out.= $post_string;

    fwrite($fp, $out);
    fclose($fp);
}

Это открывает сокет, запускает запрос на получение и немедленно закрывает сокет и возвращается.

49
ответ дан 24 November 2019 в 06:09
поделиться

Попробуйте:

//Your Code here
$pid = pcntl_fork();
if ($pid == -1) {
     die('could not fork');
}
else if ($pid)
{
echo("Bye")  
}
else
{
     //Do Post Processing
}

Это НЕ будет работать как модуль apache, вам необходимо использовать CGI.

1
ответ дан 24 November 2019 в 06:09
поделиться

Я нашел эту интересную ссылку для выполнения асинхронной обработки (получение запроса).

askapache

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

1
ответ дан 24 November 2019 в 06:09
поделиться

Интересная задача. Я предполагаю, что вы просто хотите запустить какой-то процесс или действие на другом сервере, но не заботитесь о результатах и ​​хотите, чтобы ваш скрипт продолжался. Возможно, в cURL есть что-то, что может сделать это, но вы можете рассмотреть возможность использования exec () для запуска другого скрипта на сервере, который выполняет вызов, если cURL не может этого сделать. (Обычно людям нужны результаты вызова скрипта, поэтому я не уверен, может ли PHP просто запускать процесс.) С помощью exec () вы можете запустить wget или даже другой сценарий PHP, который выполняет запрос с помощью file_get_conents () .

3
ответ дан 24 November 2019 в 06:09
поделиться

Вы этого не сделаете. Хотя PHP предлагает множество способов вызова URL-адреса, он не предлагает готовую поддержку для выполнения любого вида асинхронной / поточной обработки для каждого цикла запроса / выполнения. Любой метод отправки запроса URL-адреса (или оператора SQL, или т. Д.) Будет ждать ответа какого-то типа . Для этого вам понадобится какая-то вспомогательная система, работающая на локальном компьютере (поиск в Google для "очереди заданий php")

6
ответ дан 24 November 2019 в 06:09
поделиться

Что касается вашего обновления, насчет нежелания ждать загрузки полной страницы - я думаю запрос HTTP HEAD - это то, что вы ищете ..

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

"PHP / Curl: HEAD Запрос занимает много времени на некоторых сайтах" Вы добавляете URL-адрес в очередь, и фоновый процесс или задание cron регулярно проверяет наличие новых заданий и выполняет запросы по URL-адресу

13
ответ дан 24 November 2019 в 06:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: