PHP Doku:: Baut eine persistente MS SQL Verbindung auf - function.mssql-pconnect.html

Verlauf / Chronik / History: (1) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzDatenbankerweiterungenAnbieterspezifische DatenbankerweiterungenMicrosoft SQL ServerMssql-Funktionenmssql_pconnect

Ein Service von Reinhard Neidl - Webprogrammierung.

Mssql-Funktionen

<<mssql_num_rows

mssql_query>>

mssql_pconnect

(PHP 4, PHP 5, PECL odbtp >= 1.1.1)

mssql_pconnectBaut eine persistente MS SQL Verbindung auf

Beschreibung

resource mssql_pconnect ([ string $servername [, string $username [, string $password [, bool $new_link ]]]] )

mssql_pconnect() verhält sich, von zwei wesentlichen Unterschieden abgesehen, fast genauso wie mssql_connect().

Erstens: Die Funktion wird beim Verbindungsaufbau zunächst versuchen, eine (persistente) Verbindung zu finden, die unter dem selben Host, Benutzername und Passwort geöffnet wurde. Wenn eine solche gefunden wird, gibt sie deren Kennung zurück, statt eine neue Verbindung aufzubauen.

Zweitens: die Verbindung zum SQL Server wird bei Beendigung des Skripts nicht geschlossen. Stattdessen bleibt die Verbindung für eine spätere Verwendung bestehen (mssql_close() schließt keine Verbindungen, die mittels mssql_pconnect() aufgebaut wurden).

Eine solche Verbindung wird deshalb als 'persistent' bezeichnet.

Parameter-Liste

servername

Der MS SQL-Server. Er kann auch eine Portnummer enthalten, z.B. hostname:port.

username

Der Benutzername

password

Das Passwort

new_link

Falls mssql_pconnect() zum zweiten Mal mit denselben Argumenten aufgerufen wird, wird keine neue Verbindung aufgebaut, sondern stattdessen die Verbindungskennung der bereits bestehenden Verbindung zurückgegeben. Mit diesem Parameter wird dieses Verhalten geändert, sodass mssql_pconnect() immer eine neue Verbindung aufbaut, auch wenn mssql_pconnect() zuvor schon mit denselben Parameter aufgerufen wurde.

Rückgabewerte

Gibt bei Erfolg eine positive persistente MS SQL Verbindungskennung oder, bei Auftreten eines Fehlers, FALSE zurück.

Beispiele

Beispiel #1 mssql_pconnect() mit Verwendung des Parameters new_link

<?php
// Mit MSSQL verbinden und Datenbank auswählen
$verbindung1 mssql_pconnect('MANGO\SQLEXPRESS''sa''phpfi');
mssql_select_db('php'$verbindung1);

// Eine neue Verbindung erzeugen
$verbindung2 mssql_pconnect('MANGO\SQLEXPRESS''sa''phpfi'true);
mssql_select_db('random'$verbindung2);
?>


4 BenutzerBeiträge:
- Beiträge aktualisieren...
php at burntpopcorn dot net
11.03.2004 3:17
Please note that mssql_pconnect creates a connection for the pool for *each process*. If you have "ThreadsPerChild" set to 50 in apache, and mssql.max_procs set to 25 in php, then eventually you will get mssql_pconnect failing to give you a connection to the database. This has stumped me for quite a while, and the answer finally presented itself thanks to the people in #php.
dave at dontspamme dot com
10.02.2004 23:32
If you are running PHP/Apache combination on a Windows machine that is part of a domain, using NT Authentication to connect to a MS SQL Server, you must to do the following things:

1) Turn NT Authentication On (under MSSQL in php.ini)
2) Configure the Apache service to run as the user that is authorized to access the MS SQL server.

Hope this helps save someone the time that it took me to track down!
m1tk4 at hotmail dot com
17.07.2002 18:08
Be careful with pconnect!

Platform: RH Linux 7.3, PHP 4.2.1. FreeTDS.

pconnect does give you better time than connect (about 0.25-0.4 seconds gain) BUT:

- occasionally, I've experienced "quirks" when fetch() would randomly return empty recordsets from stored procedurest that can_not return empty recordsets by definition.

- if you restart MSSQL server while some of the connections did not time out, next pconnect() will not establish a new connection! It will return an old one, so next time you do execute() or query() your script will just _hang_ until timeouted by Apache.

All of the above I believe are FreeTDS problems, not PHP. I wonder if somebody with PHP+Sybase lib got pconnect to work.
php at rawhide dot cjb dot net
12.07.2001 15:18
One should not that persistent connections are not persistent under a CGI interface.



PHP Powered Diese Seite bei php.net
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)