Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从另一个PHP文件或从PHP中的mysql数据库获取数据,哪一个是最好的?_Php_Mysql_Apache_File - Fatal编程技术网

从另一个PHP文件或从PHP中的mysql数据库获取数据,哪一个是最好的?

从另一个PHP文件或从PHP中的mysql数据库获取数据,哪一个是最好的?,php,mysql,apache,file,Php,Mysql,Apache,File,我在我的网站上有一个名为“在线事件”的模块,该模块将每8秒运行一次,并获取我网站上最近的活动。因此,如果一次有100多个用户在使用我的网站,它会消耗更多的内存和cpu使用率。如果不影响在线事件模块,我应该如何减少cpu使用和内存。在这里对文件做点什么会是一件好事吗?请帮助我。如果我理解正确,模块需要每8秒运行一次吗 为什么不存储模块最后一次运行的时间,然后在数千名用户每次访问时,只检查模块最后一次运行后的时间是否大于8秒?如果是,您运行模块并存储新时间,如果不是,您什么也不做,等待其他用户访问该

我在我的网站上有一个名为“在线事件”的模块,该模块将每8秒运行一次,并获取我网站上最近的活动。因此,如果一次有100多个用户在使用我的网站,它会消耗更多的内存和cpu使用率。如果不影响在线事件模块,我应该如何减少cpu使用和内存。在这里对文件做点什么会是一件好事吗?请帮助我。

如果我理解正确,模块需要每8秒运行一次吗

为什么不存储模块最后一次运行的时间,然后在数千名用户每次访问时,只检查模块最后一次运行后的时间是否大于8秒?如果是,您运行模块并存储新时间,如果不是,您什么也不做,等待其他用户访问该站点,为他生成新的在线事件?

优化

优化

(关于Wordpress,但对所有应用程序都有很好的提示)


首先,将间隔设置得更高。然后,在服务器端以某种方式缓存模块。例如,制作一个通过php文件加载的静态html文件,该文件只有在数据库中发生更改时才会更新,因此,如果确实发生了什么事情,您只需要查询数据库并从中呈现数据。确保缓存更新的一个简单方法是每次数据库中发生更改时删除静态文件。这只有在没有太多数据库更改的情况下才有意义。

原则上这是正确的方法-但PHP没有复杂的文件锁定语义-将缓存内容存储在数据库中,以确保更新是原子的(或者对不同版本使用不同的文件名,并将当前值存储在数据库中)