Как из php скрипта асинхронно выполнить другой скрипт (т.е. не дожидаясь его окончания)

Например есть скрипт a.php, в котором нужно вызвать тяжеловесный скрипт b.php и не дожидаясь его окончания продолжить работу. Одно из решений это сокеты:

// a.php
 
function exec_script($url, $params = array())
{
    $parts = parse_url($url);
 
    if (!$fp = fsockopen($parts['host'], isset($parts['port']) ? $parts['port'] : 80))
    {
        return false;
    }
 
    $data = http_build_query($params, '', '&');
 
    fwrite($fp, "POST " . (!empty($parts['path']) ? $parts['path'] : '/') . " HTTP/1.1\r\n");
    fwrite($fp, "Host: " . $parts['host'] . "\r\n");
    fwrite($fp, "Content-Type: application/x-www-form-urlencoded\r\n");
    fwrite($fp, "Content-Length: " . strlen($data) . "\r\n");
    fwrite($fp, "Connection: Close\r\n\r\n");
    fwrite($fp, $data);
    fclose($fp);
 
    return true;
}
 
exec_script('http://example.com/b.php', array('foo' => 'bar'));

В примере, в скрипте b.php будет доступна переменная $_POST['foo'] со значением bar.
Теги:
асинхронно выполнить
Добавлено: 27 Июля 2018 08:19:38 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...