【问题标题】:How do I clear fastcgi_cache with PHP?如何使用 PHP 清除 fastcgi 缓存?
【发布时间】:2020-08-04 20:55:15
【问题描述】:

有没有内置的方法来用 PHP 清除 Nginx fastcgi_cache?我知道我可以编写一个 PHP 脚本来手动删除所有缓存文件,但这似乎太像黑客了。

【问题讨论】:

    标签: php nginx fastcgi


    【解决方案1】:

    如果你有

    fastcgi_cache_path  /tmp/nginx keys_zone=myzone:8m
    

    打电话

    rm -Rf /tmp/nginx/*
    

    真的就这么简单:当你想清理缓存时,清理缓存:)(在这种情况下只是一个文件夹)

    【讨论】:

    • 谢谢!不过,我正在尝试使用 PHP 即时执行此操作。有没有内置的 PHP 函数,还是只需要使用 PHP 的 unlink 函数来删除文件?
    • ehm... 从技术上讲,unlink() 是内置函数。当您谈论递归时,请查看以下评论​​:php.net/manual/de/function.unlink.php#101261factcgi-cache 具有固定的深度,因此您可以执行array_map('unlink', glob("/tmp/nginx/*/*/*")); 之类的操作。 * 的数量取决于您的配置。您可以保留空目录,它们通常不会受到伤害:)
    • 警告:手动删除缓存会导致error.log中有很多条目,因为当nginx想要清除它们时它们不存在。 Example [crit] 8282#0: unlink() "/etc/nginx/cache/route" failed (2: No such file or directory)
    • 我发现我还必须重新启动 nginx,因为当我删除文件夹时它完全疯了
    • 如果您使用 PHP 执行此操作,则您的站点存在安全漏洞。 nginx 和 PHP 用户空间应该是分开的。此设置将允许攻击者潜在地操纵缓存。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    • 2023-03-17
    • 2018-04-07
    • 1970-01-01
    • 2015-04-16
    • 2012-11-12
    • 2011-05-10
    相关资源
    最近更新 更多