php中getimagesize()的有效替代方案

php中getimagesize()的有效替代方案,php,performance,image,http,Php,Performance,Image,Http,可能重复: 我想获得网页中所有图像的图像大小(因此所有img标签) 问题是PHP的getimagesize()函数效率太低 我试着运行这个 for($i=0;$i<55;$i++){ getimagesize('http://www.blackcommentator.com/265/265_images/265_cartoon_do_something_now_bill_large.jpg'); } 对于($i=0;$i对于初学者,请在本地缓存图像。您在网络上传输图像55次。下载图

可能重复:

我想获得网页中所有图像的图像大小(因此所有img标签)

问题是PHP的
getimagesize()
函数效率太低

我试着运行这个

for($i=0;$i<55;$i++){
  getimagesize('http://www.blackcommentator.com/265/265_images/265_cartoon_do_something_now_bill_large.jpg');
}

对于($i=0;$i对于初学者,请在本地缓存图像。您在网络上传输图像55次。下载图像的开销大大超过查找图像宽度和高度所花费的实际时间


如果你正在谈论寻找55个不同图像的大小,你可能会考虑对代码进行一些并行化。你在建立连接时花费的时间可能与你在传输实际数据时花费的时间一样多,而且由于一次下载一个图像可能远不会使你的互联网连接饱和,因此你会毫不犹豫地放弃通过运行两个并发进程来提高性能。继续提高并发性,直到不再看到性能提高。

使用
curl
保存映像,但并行运行
curl
请求-这样它将加载得更快(瓶颈不是带宽,而是建立请求的时间,所以这会有帮助)。一旦您将图像保存到本地目录,然后对所有图像运行
getimagesize()

ye,但即使有55个不同的图像(因此必须下载)它仍然很慢…上面的代码只是一个示例,没有任何实际意义。没有办法。你通过网络获取图像,是网络速度慢。如果你不能在本地获取图像,除了安装更快的Internet连接之外,没有任何帮助。我想这是一个web限制(即实际抓取图像所需的往返时间比实际计算图像大小所需的时间更长)。您可能希望在运行代码的服务器上的图像上对其进行基准测试。不是真的,目标是在任何一个网页中获取所有图像,显然下载这些图像不需要很长时间,否则所有网页都会很慢……即使我只是简单地获取了所有的img标签,比如cnn.com和compute t他们的图像大小,即使cnn.com及其所有图像在几秒钟内加载(如果你只需访问cnn.com)也需要很长时间,而且cnn.com的CDN可能比BlackCommentor.com好得多。目前cnn.com的主页上使用了84幅图像,但并非所有图像都是400 x 400未优化的JPEG。试试基准测试ng执行
文件获取内容()所需的时间
在图像上。如果原始基准中的大部分时间没有被下载占用,我会感到惊讶。浏览器并行下载多个图像。PHP脚本正在下载同一图像,连续55次。设置TCP连接的开销可能超过查找图像维度所花费的时间。t问题是网络。你无法通过算法让你的网络连接更快,PHP也没有这样做的功能。在这种情况下,facebook是如何做到这一点的……如果你试图将cnn.com分享给facebook,它会立即显示一个从网站图片中提取的潜在缩略图列表……我注意到这些umbnails有facebook URL,这意味着他们实际上下载了所有这些图像并将其存储在服务器中,所有这些都发生在瞬间……知道他们如何做到这一点吗?知道哪些curl命令可以实现这一点吗?(在php中)从这里开始:@FrankFarmer我不知道,谢谢!