OhMad
OhMad

Reputation: 7289

PHP fire and forget not working with remote server

I'm trying to send a request to a remote server using the fire-and-forget approach. This is my code:

function backgroundPost($url, $data = array()){
  $parts=parse_url($url);

  $fp = fsockopen($parts['host'],
          isset($parts['port'])?$parts['port']:80,
          $errno, $errstr, 30);

  if (!$fp) {
      return false;
  } else {
      $encoded_data = json_encode($data);

      $output = "POST ".$parts['path']." HTTP/1.1\r\n";
      $output .= "Host: ".$parts['host']."\r\n";
      $output .= "Content-Type: application/json\r\n";
      $output .= "Content-Length: " . strlen($encoded_data) . "\r\n";
      $output .= "Connection: Close\r\n\r\n";
      $output .= $encoded_data;

      fwrite($fp, $output);
      fclose($fp);
      return true;
  }
}

//Example of use
backgroundPost('url-here', array("foo" => "bar"));

but the data that arrives is simply empty.

When I spin up the application locally and send the request to my own machine instead, the data does arrive.

Am I misunderstanding something about this pattern?

Why is it working when sending a request to my own machine but not a remote one?

Thanks!

Upvotes: 1

Views: 151

Answers (0)

Related Questions