我如何可以覆盖内置的PHP函数?
我想覆盖mysql_connection
函数,函数应该检查连接是否已经打开,只是返回该连接或者请求一个新的连接。
我正在使用一些遗留系统,它在每个页面上有1000个连接。这会降低网站的性能,并可能导致内存使用不良。
我想以这样一种方式重做这个事情,即每当发出sql连接请求时,系统都必须检查连接是否已经存在。
我不能去所有的地方更换连接到公共对象,因为系统没有写在MVC中。
有人可以帮助我吗?
我如何可以覆盖内置的PHP函数?
我想覆盖mysql_connection
函数,函数应该检查连接是否已经打开,只是返回该连接或者请求一个新的连接。
我正在使用一些遗留系统,它在每个页面上有1000个连接。这会降低网站的性能,并可能导致内存使用不良。
我想以这样一种方式重做这个事情,即每当发出sql连接请求时,系统都必须检查连接是否已经存在。
我不能去所有的地方更换连接到公共对象,因为系统没有写在MVC中。
有人可以帮助我吗?
对于字面回答你的问题,看到重复的链接:Redefine Built in PHP Functions
然而,覆盖本地mysql_
家庭的功能将是徒劳的任务。你将不得不在PHP中重新实现它们的功能,这可能是不可能的 - 它们是mysql扩展的一部分,我假设它是用C编写的。我认为你去的唯一途径是定义一个替代类别或功能集合,然后在旧系统中进行搜索+替换,用所有新呼叫代替所有mysql_
呼叫。
从[documentation](http://php.net/manual/en/function.mysql-connect.php):*如果使用相同的参数对'mysql_connect()'进行第二次调用,**不会建立新的连接**,而是返回已经打开的链接的链接标识符。*您是否在每次调用时明确请求新链接?或者你改变参数?如果不是,则不需要覆盖该功能。 'mysql_connect'已经重新使用连接。 –
您可能正在寻找['mysql_pconnect'](http://de3.php.net/manual/en/function.mysql-pconnect.php)。另外请记住,你可以配置mysql允许通过各种[运行时配置](http://de3.php.net/manual/en/mysql.configuration.php)使用的连接数量 – Gordon
你不需要需要有一个MVC架构的应用程序才能使用类!请停止混淆这两件事! –