I need a PHP cURL configuration so that my script is able to send requests and ignore the answers sent by the API.
curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_POST,count($fields)); curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string); // curl_setopt($ch, CURLOPT_RETURNTRANSFER, false); //curl_setopt($ch, CURLOPT_TIMEOUT_MS, 100); $result = curl_exec($ch); echo $result; curl_close ($ch);
I tried adding: // curl_setopt($ch, CURLOPT_RETURNTRANSFER, false); //curl_setopt($ch, CURLOPT_TIMEOUT_MS, 100);
But its not working properly and the API webserver is not receiving the requests.
The reason for this is I am sending large amount of requests to the API therefore my script is very slow because it waits for each and every request.
Any help is appreciated.
AFAIK, it will wait for a response before continuing running the script. Try adding if ($ret===false) echo curl_error($curl); after the $ret = curl_exec...
Short answer is no it isn't asynchronous.
Uses of cURL in PHP cURL is a PHP extension that allows you to use the URL syntax to receive and submit data. cURL makes it simple to connect between various websites and domains. Obtaining a copy of a website's material. Submission of forms automatically, authentication and cookie use.
curl_setopt — Set an option for a cURL transfer.
Sender file example ./ajax/sender.php
Below we trying just make ping to php script without waiting on answer
$url = 'https://127.0.0.1/ajax/received.php'; $curl = curl_init(); $post['test'] = 'examples daata'; // our data todo in received curl_setopt($curl, CURLOPT_URL, $url); curl_setopt ($curl, CURLOPT_POST, TRUE); curl_setopt ($curl, CURLOPT_POSTFIELDS, $post); curl_setopt($curl, CURLOPT_USERAGENT, 'api'); //curl_setopt($curl, CURLOPT_TIMEOUT, 1); //if your connect is longer than 1s it lose data in POST better is finish script in recevie curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_RETURNTRANSFER, false); curl_setopt($curl, CURLOPT_FORBID_REUSE, true); curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 1); curl_setopt($curl, CURLOPT_DNS_CACHE_TIMEOUT, 10); curl_setopt($curl, CURLOPT_FRESH_CONNECT, true); curl_exec($curl); curl_close($curl);
Received file example ./ajax/received.php
EDIT 2019 if you using fastcgi just finish fastcgi and browser close connection but script still will be working up to end.
How finish script: PHP mod_fcgi with fastcgi_finish_request();
For Apache2:
ob_end_flush(); flush();
For php-fpm
fastcgi_finish_request(); $this->db->query('UPDATE new_hook_memory SET new=new+1 WHERE id=1');
Old version:
ob_end_clean(); //if our framework have turn on ob_start() we don't need bufering respond up to this script will be finish header("Connection: close\r\n"); //send information to curl is close header("Content-Encoding: none\r\n"); //extra information header("Content-Length: 1"); //extra information ignore_user_abort(true); //script will be exisits up to finish below query even web browser will be close before sender get respond //we doing here what we would like do $this->db->query('UPDATE new_hook_memory SET new=new+1 WHERE id=1');
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With