我正在为我的网站编写API,还有一个非常大的类来处理所有的API请求。
大多数网页,如果不是网站上的所有网页,都会在加载时向api发送至少一个请求。这个网站最重要的优先事项是效率,结果是非常快速的服务器处理。
因此,当涉及到类和某些PHP函数时,我正在寻求一些建议。
首先,看起来我正在编写的类可能最终会有大约3000行代码。如果在每个页面上初始化,忽略每个页面中只使用一个或两个函数的事实,这会使API更慢吗?我是否应该为每个类方法查看具有类扩展的单独文件?
其次,我目前在目录中的单独文件中拥有与各种数据库的所有连接。每个连接中都有函数mysql_pconnect()。目前,我只在需要时才需要这些文件。因此,如果该方法需要连接到x数据库,那么我只需将require(connection ...)放入方法中。在一个类中包含文件是不是很糟糕?
我问,因为唯一的其他解决方案是要求页面顶部的所有连接,以便类可以访问它们,而不需要为每个方法使用它们。这就是为什么我想知道是否一次连接多个连接,即使它们没有被使用,也会对服务器造成负担?
真的有三个问题:
答案 0 :(得分:3)
不,未使用的MySQL连接不会消耗太多(如果有的话)cpu时间,尽管它会占用一些内存来处理必须在每个连接基础上维护的“状态”的各个位。
但请注意,MySQL的连接协议实际上相当“轻量级”。维护一个持久连接池听起来很有吸引力,但无论如何建立新连接的成本已经非常低了。
持久连接是解决连接开销的快速解决方案,但它们确实会带来问题。最糟糕的是被放弃的连接会使连接处于不确定的状态(进行中的事务,更改服务器变量/配置等等),除非你非常小心,否则你很容易造成无意的死锁。
答案 1 :(得分:1)
如果您正在编写api来将数据从数据库提供给多个第三方,那么最好不要让他们查询数据库,甚至不通过Web服务(除非您有这些第三方的第二到第二次数据库突变需要立即)
更好的方法是将xml文件写入受保护的位置,并使用Web服务来授权第三方并提供xml文件。 然后定期更新xml。