如何以编程方式在PHP中找出给定URL的HTTP请求总数?
有没有一种简单的方法可以做到这一点,而无需解析URL指向的整个资源,并找出URL中链接到的不同内容类型(图像、javascript文件等)?编辑 这是很容易做到的,使用它比使用PHP更接近于正确的作业工具如何以编程方式在PHP中找出给定URL的HTTP请求总数?,php,http,url,Php,Http,Url,有没有一种简单的方法可以做到这一点,而无需解析URL指向的整个资源,并找出URL中链接到的不同内容类型(图像、javascript文件等)?编辑 这是很容易做到的,使用它比使用PHP更接近于正确的作业工具 原始答案(稍作修改) 要有效地做到这一点需要做很多工作,我怀疑这是否值得费心 在我看来,您必须使用类似的方法来解析HTML文档,并查找所有src=和href=属性并解析它们。听起来相对简单,我知道,但有几千个潜在的绊脚石。以下是我脑海中的一些想法: 首先,您必须检查最初请求的资源实际上是一
原始答案(稍作修改) 要有效地做到这一点需要做很多工作,我怀疑这是否值得费心 在我看来,您必须使用类似的方法来解析HTML文档,并查找所有
src=
和href=
属性并解析它们。听起来相对简单,我知道,但有几千个潜在的绊脚石。以下是我脑海中的一些想法:
- 首先,您必须检查最初请求的资源实际上是一个HTML文档。这可能与查看响应的
头一样简单,但如果服务器在这方面的行为不正确,您可能会得到错误的答案内容类型:
- 您必须检查重复的资源(如重复的图像等),这些资源可能没有以相同的方式指定-例如,如果您从
读取的文档位于example.com
,并且它使用图像/dir1/dir2/doc.html
,文档中的某些位置可能被称为/dir1/dir3/img.gif
,某些位置可能是/dir1/dir3/img.gif
有些地方可能是http://www.example.com/dir1/dir3/img.gif
——您必须认识到这是一个资源,只会导致一个请求。/dir3/img.gif
- 你必须注意特定于浏览器的东西(比如
只是一些快速的想法)
- 您应该知道,缓存以及浏览器遵守和不遵守缓存指令的方式的差异可能会导致不同浏览器在不同时间为同一页面生成不同的资源请求,这可能值得考虑
- 如果您的项目的目的只是测量这个指标,并且您可以控制所讨论的网站,那么您可以通过一个php代理来传递每个资源,该代理可以计算请求数。也就是说,对于ssi、脚本、样式、字体等等,您可以遵循这种模式
- 如果由于您网站的性质,第2点不可能实现,但您可以访问,那么解析HTTP日志如何?我可以想象,与解析html/php文件相比,这将非常简单,但可能非常缓慢
- 如果您没有访问网站源代码/http日志的权限,那么我怀疑您是否能够真正准确地执行此操作,这涉及到大量的工作,但是您可以使用curl获取初始HTML,然后按照DaveRandom的说明进行解析
我希望这方面的内容能对您有所帮助。这是一个很好的答案,详细介绍了解析HTML及其所有相关资产的复杂性。