Как сделать так, чтобы загрузка на тот же сервер выполнялась молниеносно?Php

Кемеровские программисты php общаются здесь
Anonymous
Как сделать так, чтобы загрузка на тот же сервер выполнялась молниеносно?

Сообщение Anonymous »

Я пытаюсь создать прокси-сайт AAA.com и передать трафик на BBB.com на серверной стороне через PHP cURL, а затем снова передать ответ от BBB.com посетителям AAA.com. Оба сайта находятся на одном сервере. Ниже приведен код:

Код: Выделить всё

$proxied_site = 'https://BBB.com';

$proxied_site_parsed = parse_url($proxied_site);

$ch = curl_init();

$proxied_url = $proxied_site . $_SERVER['REQUEST_URI'];

curl_setopt($ch, CURLOPT_URL, $proxied_url);

curl_setopt($ch, CURLOPT_RESOLVE, array(
"{$proxied_site_parsed['host']}:443:170.249.199.178",
));

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $_SERVER['REQUEST_METHOD']);
$requestHeaders = [];
foreach (getallheaders() as $name => $value) {
if ($name == 'Host') {
$value = $proxied_site_parsed['host'];
}
$requestHeaders[] = "$name: $value";
}

curl_setopt($ch, CURLOPT_HTTPHEADER, $requestHeaders);

if (in_array($_SERVER['REQUEST_METHOD'], ['POST', 'PUT', 'DELETE'])) {
curl_setopt($ch, CURLOPT_POSTFIELDS, file_get_contents('php://input'));
}

curl_setopt($ch, CURLOPT_ENCODING, '');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);

$response = curl_exec($ch);

$response_header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$responseHeaders = substr($response, 0, $response_header_size);
$responseBody = substr($response, $response_header_size);

foreach (explode("\r\n", $responseHeaders) as $header_line) {

if (stripos($header_line, 'HTTP/') === 0 || stripos($header_line, 'Set-Cookie:') === 0) {
header($header_line, false);
} else {
header($header_line);
}
}

curl_close($ch);

echo $responseBody;
После некоторого тестирования cURL по-прежнему требуется около 0,006 секунды сетевого времени, чтобы добраться до сайта BBB.com на том же сервере.
Мой вопрос есть ли возможность сделать это быстрее? Могу ли я сделать это молниеносно и так же быстро, как 0,00006, поскольку они оба находятся на одном сервере?
Я пробовал использовать IP:

Код: Выделить всё

$ch = curl_init('XXX.XXX.XXX.XXX');
И CURLOPT_RESOLVE:

Код: Выделить всё

curl_setopt($ch, CURLOPT_RESOLVE, array(
"{$proxied_site_parsed['host']}:443:XXX.XXX.XXX.XXX",
));
Но ни то, ни другое не сработало, и время работы сети все еще составляло около 0,006 с.
Возможно ли это вообще с cURL? Или хотя бы сделать 0,0006 с?
Если нет, то почему?

Подробнее здесь: https://stackoverflow.com/questions/790 ... tning-fast

Вернуться в «Php»