我正在尝试找到一种方法来监控有关我的应用程序文件系统上的文件访问的基本信息。文件使用公共驱动程序存储,并通过适当的符号链接公开提供。我想在访问文件时向数据库添加记录。有没有办法在不创建单独的控制器的情况下实现这一目标?也许是文件系统中间件类型机制?
答案 0 :(得分:1)
首先,您的PHP应用程序(在本例中为Laravel)不会处理静态文件,这些文件由您的Web服务器(Nginx,Apache等)处理。 如果是PHP请求,通常的配置只会将请求路由到PHP,如果是静态文件,则只提供文件。
您可以告诉Web服务器通过应用程序的特定URL路由所有静态文件,然后在控制器中提供该文件并保存统计信息,但我建议您不要这样做,因为静态文件非常有效如果您通过PHP应用程序处理它们,那么您将添加大量影响性能的工作。
您可以创建一个Laravel控制台命令,该命令可以使用日志文件的每个新行进行调用,并使用SupervisorD来确保始终调用该命令。
所以,你可以用这样的方法来调用你的命令:
tail -F -n 1 /path/to/access.log | /usr/bin/php /path/to/application/artisan register:log
-F
将处理日志轮换,-n 1
将使用最后一行(或者您可以尝试使用-n 0
)以确保不考虑旧行由于某种原因,进程重新启动,register:log
可以是Laravel中控制台命令的签名。
这样,访问日志中的每一行都会以日志行作为输入来调用您的命令。