天天看點

php mysqli::close()

Anonymous (24-Apr-2010 05:43)

<code>The mysqli_close() function and object method only remove the ability to use the mysql object again in the script, essentially on the surface only nulling out all object parameters. 過程化的mysqli_close()函數和面向對象的方法調用隻是不讓使用者在此後的腳本中再使用mysql對象,基本上隻在表面上歸零所有對象參數</code><code>At least with PHP5.3.2 and Windows connecting by tcp, this differs by the old mysql_close() function in that it does not actually close out the tcp socket being used.  You should always use mysqli_kill() function before mysqli_close() to actually close and free up the tcp socket being used by PHP.  Garbage collection after script execution nor mysqli_close() do not kill the tcp socket on their own.  The socket would otherwise remain in 'wait' state for approximately 30 seconds, and any additional page loads/connection attempts would only add to the total number of open tcp connections.  This wait time does not appear to be configurable via PHP settings.</code>

至少在利用windows的tcp連接配接的這個版本的php中,舊的函數并沒有真正的關閉正在被使用的tcp連接配接,你應該總是在調用mysqli_close()前使用mysqli_kill()函數,確定釋放php正在使用的tcp套接字連接配接。腳本結束後執行gc要麼mysqli_close()是不會自己殺掉這個tcp連接配接的。這個tcp連接配接會保持大約30秒的等待狀态,期間任何頁面的加載或連接配接的嘗試都會增加連接配接的總數,而這個等待時間似乎在php的配置檔案中是不能設定的

<code>Also as of this version, mysqli created links cannot be "deactivated", and will continue to accumulate in process memory until the PHP server or process is restarted, essentially making mysqli.max_links = -1 required.</code>

另外在這個版本中,mysqli建立的連接配接是不能被設定為無效的,而且連接配接會在這個程序中積累,知道php伺服器或者程序重新開機,是以可以設定mysqli.max_links = -1