Php 文件获取内容(和wget)非常慢

Php 文件获取内容(和wget)非常慢,php,linux,performance,wget,Php,Linux,Performance,Wget,我正在使用google文本到语音api,但由于某些原因,当我通过php或命令行连接到它时,它的速度非常慢 我正在这样做: $this->mp3data = file_get_contents("http://translate.google.com/translate_tts?tl=en&q={$text}"); 其中,$text只是一个URL编码的字符串 我还尝试通过命令行上的wget执行此操作: wget http://translate.google.com/trans

我正在使用google文本到语音api,但由于某些原因,当我通过php或命令行连接到它时,它的速度非常慢

我正在这样做:

$this->mp3data = file_get_contents("http://translate.google.com/translate_tts?tl=en&q={$text}");  
其中,$text只是一个URL编码的字符串

我还尝试通过命令行上的wget执行此操作:

wget http://translate.google.com/translate_tts?tl=en&q=test
无论哪种方式都需要20秒或更长时间。通过php,它最终会获得内容,并按照我的要求将其添加到服务器上的新文件中。通过wget,它将连接超时

然而,如果我只是在浏览器中访问该url,它几乎是即时的

有人能解释一下为什么会发生这种情况吗


谢谢

这是因为谷歌解析机器人的方式。您需要欺骗用户代理头以假装是一台计算机

有关如何进行此操作的一些信息,请参见:


这是由于谷歌解析机器人的方式。您需要欺骗用户代理头以假装是一台计算机

有关如何进行此操作的一些信息,请参见:


现在我设法解决了这个问题,这就是我最后要做的,现在只需几秒钟:

$header=array("Content-Type: audio/mpeg"); 
        $ch = curl_init(); 
        curl_setopt($ch, CURLOPT_URL, $uri); 
        curl_setopt($ch, CURLOPT_HEADER, false); 
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
        $this->mp3data = curl_exec($ch); 
        curl_close($ch); 

现在我终于解决了这个问题,这就是我最后要做的,现在只需要几秒钟:

$header=array("Content-Type: audio/mpeg"); 
        $ch = curl_init(); 
        curl_setopt($ch, CURLOPT_URL, $uri); 
        curl_setopt($ch, CURLOPT_HEADER, false); 
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
        $this->mp3data = curl_exec($ch); 
        curl_close($ch); 

可以尝试curl(),但它可能只是站点带宽,您可以添加更多上下文吗?这是什么机器?都在同一台机器上吗?它是如何连接到互联网的?这是一台linux机器,但同样的事情也发生在我的windows开发机器上。事实上,这不会发生在windows开发机器上,这也是非常即时的。可以尝试curl(),但可能只是站点带宽。你能添加一些上下文吗?这是什么机器?都在同一台机器上吗?它是如何连接到互联网的?它是一台linux机器,但同样的事情发生在我的windows开发机器上。事实上,它并没有发生在windows上,这几乎是即时的。