Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果多个URL来自同一个域,使用file_get_contents()访问它们的有效方法?_Php_Web Scraping_File Get Contents - Fatal编程技术网

Php 如果多个URL来自同一个域,使用file_get_contents()访问它们的有效方法?

Php 如果多个URL来自同一个域,使用file_get_contents()访问它们的有效方法?,php,web-scraping,file-get-contents,Php,Web Scraping,File Get Contents,题目基本上解释了这一切。我必须定期从单个域的多个页面收集数据 我可以在循环中使用file\u get\u contents(),但这需要很长时间。如果所有页面都来自同一个域,我能做些什么来加速这个过程吗 更新:我在想一些事情,比如不要一次又一次地查找域名等等 谢谢。您可以使用curl\u multi\u init或使用线程,前提是您不需要上一个请求的结果来处理下一个请求。这应该会大大加快处理速度。事实并非如此,文件获取内容就是文件获取内容,网络请求就是网络请求。您可以做一些事情来加速它,但这涉及

题目基本上解释了这一切。我必须定期从单个域的多个页面收集数据

我可以在循环中使用
file\u get\u contents()
,但这需要很长时间。如果所有页面都来自同一个域,我能做些什么来加速这个过程吗

更新:我在想一些事情,比如不要一次又一次地查找域名等等


谢谢。

您可以使用
curl\u multi\u init
或使用线程,前提是您不需要上一个请求的结果来处理下一个请求。这应该会大大加快处理速度。

事实并非如此,文件获取内容就是文件获取内容,网络请求就是网络请求。您可以做一些事情来加速它,但这涉及到一些问题,例如下载每个文件,然后执行一个独立的(非阻塞)脚本来分别处理它们。尽管如此,任何计算机上都有资源限制,因为资源不是无限的。@ArtisticPhoenix我能做些什么不必一次又一次地查找DNS等吗。?我不确定我所说的在技术上是否正确,但我希望您理解我的意思。
不幸的是,URL需要按顺序访问。来自上一个结果的数据将用于下一次迭代
Yep,这几乎会扼杀任何并行或异步处理的机会。你必须保存所有的文件,一旦它们被保存,你就可以按顺序处理它们,这就是你所能做的。但这会增加很多复杂性,但可能不会带来太多好处。所以我的意思是,你可以尝试一些并行下载它们的方法,将它们放在一个文件夹中,然后在它们全部下载后,按顺序处理它们,但我不知道它能节省多少时间,这在很大程度上取决于IO和网络带宽。不要一次又一次地查找DNS等。操作系统可能会缓存服务器的IP地址,因此不必每次都解析。我甚至没有想到这一点,有一段时间没有使用
CURL
。不幸的是,虽然至少不在API之外,但URL需要按顺序访问。来自上一个结果的数据将在下一次迭代中使用。我认为在这种情况下,您可以使用
curl\u multi\u init
或线程下载需要处理和存储的所有页面。然后,您可以使用存储的内容按顺序处理它们。无论如何,它都会给你提速。