Php 在图像宿主脚本中,如何测量图像';什么是带宽消耗?

Php 在图像宿主脚本中,如何测量图像';什么是带宽消耗?,php,image,bandwidth,Php,Image,Bandwidth,我正在增强一个PHP映像托管脚本,但我面临一个问题:客户端请求了一个函数,将每个映像的已用带宽限制为100MB/天 这包括缩略图 到目前为止,未使用PHP(使用nginx)直接提供缩略图 我曾尝试使用php脚本而不是direct.jpg,它的代码缓存量非常大(使用APC的缓存存储使用的带宽量,并使用X-Sendfile头为图像提供服务),但由于连接量非常非常高,服务器只是阻塞了 有没有一种更有效的方法来测量缩略图使用的带宽而不阻塞CPU和RAM? 这个问题通常是如何解决的 谢谢解析服务器访问日志

我正在增强一个PHP映像托管脚本,但我面临一个问题:客户端请求了一个函数,将每个映像的已用带宽限制为100MB/天 这包括缩略图

到目前为止,未使用PHP(使用nginx)直接提供缩略图 我曾尝试使用php脚本而不是direct.jpg,它的代码缓存量非常大(使用APC的缓存存储使用的带宽量,并使用X-Sendfile头为图像提供服务),但由于连接量非常非常高,服务器只是阻塞了

有没有一种更有效的方法来测量缩略图使用的带宽而不阻塞CPU和RAM? 这个问题通常是如何解决的


谢谢

解析服务器访问日志。我相信nginx,它们位于/var/log/nginx/access.log。您可能需要更改权限以允许访问,或者如果您不愿意这样做,可以使用cron定期将该文件复制到可访问的文件夹中

我想,如果你缓存了结果,并且每小时只检查一次,那么你可以使用grep-c来完成

我很想知道,如果您选择了一个已知已被访问的文件,运行需要多长时间:

grep -c filename.jpg /var/log/nginx.access.log

然后,您只需将该计数乘以文件大小即可获得该映像的带宽。

问题是服务器访问日志在几个小时后会增长到数百GB。这是否可行?我在上面添加了更多信息。实际上,当我通过控制台发送grep命令时,它只会无限期地传递。access_日志文件是800gbgrep,它的速度惊人,因此如果这不起作用,那么以任何方式使用日志都将是一个问题。除了通过在某处增加计数器的php脚本提供图像(这不是一个好主意-速度慢,处理锁等),我看不到一个好方法。是否可以估计达到100MB需要多长时间?然后,您每天只能允许访问数小时/分钟。不准确,但它可以完成任务。