downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

mssql_query> <mssql_num_rows
[edit] Last updated: Fri, 24 Feb 2012

view this page in

mssql_pconnect

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

mssql_pconnectAbre uma conexão persistente com MS SQL

Descrição

int mssql_pconnect ([ string $servername [, string $username [, string $password ]]] )

Retorna: um identificador de link persistente com MS SQL se funcionar, ou FALSE se houver erro.

mssql_pconnect() funciona muito parecido com mssql_connect() com duas diferenças maiores.

Primeiro, ao conectar, a função irá primeiro tentar achar uma conexão (persistente) que já esteja aberta com o mesmo host, username e password. Se uma é encontrada, um identificador para ela será retornada ao invés de abrir uma nova conexão.

Segundo, a conexão ao servidor SQL não será fechada quando a execução do script terminar. Ao invés, a conexão permanecerá aberta para uso futuro (mssql_close() não irá fechar conexões criadas com mssql_pconnect()).

Este tipo de conexão é chamado 'Persistente'.



mssql_query> <mssql_num_rows
[edit] Last updated: Fri, 24 Feb 2012
 
add a note add a note User Contributed Notes mssql_pconnect
kagaku at gmail dot com 02-May-2012 06:47
Be careful when utilizing mssql_pconnect to connect to multiple databases on the same server using different credentials. For example:

<?php
/* first connection */
$conn1 = mssql_pconnect('production-server','sa','1234');
mssql_select_db($conn1,'invoicelistdb');

$row = mssql_query('select top 10 * from invoices', $conn1);

/* open another connection, same server different */
$conn2 = mssql_pconnect('production-server','loweruser','6789');
mssql_select_db($conn2,'someotherdb');

?>

Results in the error:

PHP Warning:  mssql_select_db(): Unable to select database:  someotherdb

I suspect mssql_pconnect detects a connect opened to "production-server" and just re-uses it, regardless of whether or not the credentials are the same. We did not notice this until consolidating two different MSSQL servers onto one server with two databases with different users/permissions. Reverting back to mssql_connect() solves the problem.
php at burntpopcorn dot net 10-Mar-2004 06: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-Feb-2004 02: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-Jul-2002 09: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-Jul-2001 06:18
One should not that persistent connections are not persistent under a CGI interface.

 
show source | credits | stats | sitemap | contact | advertising | mirror sites