2017-07-29 81 views
0

例如,
如果用户正在访问我服务器上的映像文件,是否可以同时执行另一个PHP文件?当用户访问另一个文件时,是否可以触发(执行)一个php文件?

我想记录访问此图像文件的用户的ip,HTTP_USER_AGENTHTTP_ACCEPT_LANGUAGE。难点在于如何在用户访问图像时执行(或者可能会说“触发”)PHP记录文件。我知道我可以先将图像的内容读取到PHP中,然后将其输出为图像并同时记录用户的信息,但是当图像文件的大小非常大时,此方法可能会占用太多的内存使用量。由于这个原因,是否有可能让用户直接访问图像文件,但也可以同时触发另一个PHP文件?

+0

你找到一个解决办法?如果您认为合适,您有可能审核答案并提供意见和/或赞成和接受吗?谢谢! – cnst

+0

感谢您的接受!请让我知道为什么我的答案可能不令人满意,也不能保证满意。 – cnst

回答

0
  • 如果你只是想日志记录$remote_addr,以及$http_user_agent$http_accept_language,你真的没有使用PHP在所有 - 整个过程可以用自定义日志格式更精细的完成比combined之一,在nginx以及Apache

  • 此外,您还可以利用ngx_http_addition_module的功能在每个其他请求之前或之后执行子请求,您可以在其中执行日志记录,并提供任何回报(例如不会实际损坏图像)。

  • 或者,您也可以将所有请求发送到PHP,然后使用请求的值X-Accel-Redirect,随后让nginx在不涉及您的php脚本的情况下为图像提供服务,从而减轻您对内存使用的担忧。


参考文档:

0

你有2个解决方案

  • 告诉Apache路由到您的index.php(或其他)为每一个图像请求(重写所有请求yourscript.php,处理和路由到正确的文件/控制器)例如:https://stackoverflow.com/a/9453207/4196542
  • 不给真实图片url,并通过像“/getImage.php?image=foo.png”这样的php控制器。记录ip和你想要的所有数据,然后为图像提供服务。
相关问题