What are the differences between using fsockopen and file_get_contents for retrieving external files in PHP?

When retrieving external files in PHP, the main differences between using fsockopen and file_get_contents are the level of control and flexibility they offer. fsockopen allows for more customization and control over the connection, while file_get_contents is simpler to use but may not provide as much control.

// Using fsockopen to retrieve an external file
$host = 'www.example.com';
$port = 80;
$timeout = 30;
$fp = fsockopen($host, $port, $errno, $errstr, $timeout);
if (!$fp) {
    echo "Error: $errstr ($errno)";
} else {
    fwrite($fp, "GET / HTTP/1.0\r\nHost: $host\r\n\r\n");
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
}

// Using file_get_contents to retrieve an external file
$url = 'http://www.example.com';
$content = file_get_contents($url);
if ($content === false) {
    echo "Error: Unable to retrieve content from $url";
} else {
    echo $content;
}