In PHP, you can send data asynchronously using curl
by setting it up in a way that it doesn’t wait for a response. Here’s a function that does this by using curl
with options configured to ignore the response:
function sendAsyncRequest($url, $data = [])
{
$ch = curl_init();
// If data is provided, we assume it's a POST request
if (!empty($data)) {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
}
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false); // Don't wait for response
curl_setopt($ch, CURLOPT_HEADER, false); // Don't include headers in output
curl_setopt($ch, CURLOPT_TIMEOUT, 1); // Timeout quickly
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
// Prevent waiting for response by closing the connection early
curl_setopt($ch, CURLOPT_FORBID_REUSE, true);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_exec($ch);
curl_close($ch);
}
// Usage example
$url = "https://example.com/api/endpoint";
$data = ['param1' => 'value1', 'param2' => 'value2'];
sendAsyncRequest($url, $data);
Explanation:
CURLOPT_RETURNTRANSFER
: Setting this tofalse
means the function won’t wait for data to be returned.CURLOPT_TIMEOUT
: Setting a short timeout ensures the request doesn’t delay your script.CURLOPT_FORBID_REUSE
andCURLOPT_FRESH_CONNECT
: These options ensure that the connection to the remote server is closed immediately, so the request is sent and then the PHP script moves on.
This function initiates a request to another server and moves on without waiting for the server’s response.