Php 文件获取内容(和wget)非常慢
我正在使用google文本到语音api,但由于某些原因,当我通过php或命令行连接到它时,它的速度非常慢 我正在这样做: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
$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上,这几乎是即时的。