What are the advantages and disadvantages of using fsockopen() in PHP for retrieving data from a remote server compared to file_get_contents()?

When retrieving data from a remote server in PHP, using fsockopen() provides more control and flexibility compared to file_get_contents(). fsockopen() allows for setting custom headers, handling timeouts, and making more complex HTTP requests. However, it requires more code and understanding of socket programming.

// Using fsockopen() to retrieve data from a remote server
$host = 'www.example.com';
$port = 80;
$path = '/api/data';

$fp = fsockopen($host, $port, $errno, $errstr, 30);
if (!$fp) {
    echo "Error: $errstr ($errno)\n";
} else {
    $out = "GET $path HTTP/1.1\r\n";
    $out .= "Host: $host\r\n";
    $out .= "Connection: Close\r\n\r\n";

    fwrite($fp, $out);

    $response = '';
    while (!feof($fp)) {
        $response .= fgets($fp, 128);
    }

    fclose($fp);

    // Process $response data
}