PHP Async Curl POST замедляет мой код за 500 мс - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь увеличить / ускорить свое приложение

Поэтому я занимаюсь разработкой целевой страницы, которая сохраняет данные и перенаправляет их после сохранения. Чтобы сохранить данные, я использовал другую службу на своем сервере.которые получают данные из CURL и публикуют их в Bigquery.

Проблема в том, что время выполнения CURL составляет около 700 мс, а когда я удаляю код CURL, я выполняю код в 95-110 MS

Вот мой пример кода CURL -

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $request_url);
    curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $array);
    curl_setopt($ch, CURLOPT_TIMEOUT, 1);
    curl_exec($ch);
    curl_close($ch);

Я хочу уменьшить время скручивания с 700 мс до 50-180 мс, если оно улучшается с помощью кода скручивания или альтернативного решения.

Ответы [ 2 ]

0 голосов
/ 09 мая 2019

Итак, я нашел решение для построения асинхронного скручивания, которое реагирует на миллисекунды, а не на секунды

Я заменил

curl_setopt($ch, CURLOPT_TIMEOUT, 1);

С

curl_setopt($ch, CURLOPT_TIMEOUT_MS, 50);

Таким образом, я могу ограничить максимальное время скручивания сообщения до 50MS

0 голосов
/ 09 мая 2019

1) Попробуйте удалить FRESH_CONNECT, который будет каждый раз создавать новый TCP, и вы не захотите этого, если вам нужна скорость.

Когда вы делаете CURL в первый раз, устанавливается соединение TCP. Когда данные отправляются, соединение остается активным, поэтому его можно использовать повторно, время по умолчанию составляет 60 секунд.

Так что это поможет вам со скоростью на каждый звонок после первого в течение 60 секунд.

2) Поскольку вы не используете результат скручивания, вы можете поместить данные в очередь и отправить скручивание с рабочим.

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