【问题标题】:PHP CURL causing Huge Apache access logPHP CURL 导致巨大的 Apache 访问日志
【发布时间】:2010-12-02 21:07:17
【问题描述】:

我很想知道如何阻止 Apache 记录我使用 CURL 搜索的每个 URL。

我的 PHP 脚本打开几十万个 URL,扫描它们,获取一点点信息,关闭,然后打开下一个。

我在打开访问日志后发现,每一个使用 CURL 打开的 URL 都会写入访问日志。

::1 - - [01/Dec/2010:18:37:37 -0600] "GET /test.php HTTP/1.1" 200 8469 "-"..."

我的访问日志几乎有 45MBytes 大。帮助任何人?

【问题讨论】:

    标签: php apache logging curl


    【解决方案1】:

    这是访问日志的目的 - 记录任何传入的流量

    为了有效地管理网络服务器,有必要获得有关服务器的活动和性能以及可能发生的任何问题的反馈。 Apache HTTP Server 提供了非常全面和灵活的日志记录功能。本文档介绍如何配置其日志记录功能,以及如何了解日志包含的内容。

    来源:http://httpd.apache.org/docs/trunk/logs.html

    当然,您可以选择禁用日志记录(最好不要)

    【讨论】:

    • 嗯,这是在我的本地主机上,没有其他人可以访问。禁用它有什么风险吗?
    • @Chenelle - 你可以做任何你想做的事情......让它运行不会受到伤害。如果你知道怎么做,就使用 log rotate,否则,如果 off 就可以了。
    • @Chenelle 关闭它没有风险。如果您发现您的 PHP 脚本没有像以前那样工作,您可以重新打开它。例如,假设您正在获取的 url 返回 404 或 500。连同您的错误日志,它可以帮助调试问题。我会按照@ajreal 的建议使用日志轮换。最佳
    【解决方案2】:

    如果您的所有 curl 请求都来自单个或其他可管理的 IP 组,您可以使用类似于以下的配置将它们从日志中排除:

    # Set your address here, you can do this for multiple addresses
    SetEnvIf Remote_Addr "1\.1\.1\.1" mycurlrequest
    CustomLog logs/access_log common env=!mycurlrequest
    

    您可以对用户代理字段执行类似的操作,默认情况下会指示它是 curl。

    您可以在此处阅读更多内容: http://httpd.apache.org/docs/2.2/logs.html#accesslog(条件日志是此标题下的最后一部分) 和这里 http://httpd.apache.org/docs/2.2/mod/mod_setenvif.html#setenvif

    如果您想有条件地排除日志记录,我会使用最精确的方法,例如 ip 地址。如果服务器可以从外部访问,您可能不想发现自己没有记录来自 curl 的外部请求。

    如果您想要多个文件,其中一个您可以更频繁地滚动,您还可以使用条件日志记录来分段您的日志记录。这样做的好处是您可以节省空间,同时拥有日志数据来帮助研究和调试。

    【讨论】:

    • 我假设因为我可以访问 httpd.conf 这些行可以粘贴在那里?
    • 是的,它们可以放在文件的主要部分或虚拟主机指令中。
    【解决方案3】:

    参见Apache manual,关于条件日志。这可能就是您正在寻找的。​​p>

    【讨论】:

      猜你喜欢
      • 2018-01-14
      • 2012-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多