Saltar al contenido

PHP cURL requerido solo para enviar y no esperar respuesta

Solución:

Ejemplo de archivo de remitente ./ajax/sender.php

A continuación, intentamos hacer ping al script php sin esperar una respuesta

    $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); 
    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);  

Ejemplo de archivo recibido ./ajax/received.php

EDITE 2019 si usa fastcgi, simplemente termine fastcgi y cierre la conexión del navegador, pero el script seguirá funcionando hasta el final.

fastcgi_finish_request(); $this->db->query('UPDATE new_hook_memory SET new=new+1 WHERE id=1');

Versión antigua:

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: closern"); //send information to curl is close
    header("Content-Encoding: nonern"); //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');    

Si es posible, puede ejecutar wget en segundo plano (usando exec)

Un poco tarde ahora, pero la solución a esto para cualquiera que esté interesado es que CURLOPT_RETURNTRANSFER debe configurarse en TRUE, no false. De esa manera el curl_exec La función devuelve un valor inmediatamente en lugar de esperar a que se complete la solicitud antes de regresar, es decir, actúa de forma asincrónica en lugar de sincrónica.

Ejemplo:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *