(PECL CUBRID >= 8.3.1)
cubrid_pconnect_with_url — 打开到 CUBRID 服务器的持久连接
建立到 CUBRID 服务器的持久连接。
cubrid_pconnect_with_url() 的行为与 cubrid_connect_with_url() 非常相似,但有两个主要区别。
首先,在连接时,该函数会首先尝试查找一个(持久)链接,该链接已使用相同的主机、端口、数据库名和用户 ID 打开。如果找到一个,则将返回一个标识符,而不是打开一个新连接。
其次,当脚本执行结束时,与 SQL 服务器的连接不会关闭。相反,该链接将保持打开状态以供将来使用(cubrid_close() 或 cubrid_disconnect() 不会关闭由 cubrid_pconnect_with_url() 建立的链接)。
因此,这种类型的链接称为“持久”。
<url> ::= CUBRID:<host>:<db_name>:<db_user>:<db_password>:[?<properties>]
<properties> ::= <property> [&<property>]
<properties> ::= alhosts=<alternative_hosts>[ &rctime=<time>]
<properties> ::= login_timeout=<milli_sec>
<properties> ::= query_timeout=<milli_sec>
<properties> ::= disconnect_on_query_timeout=true|false
<alternative_hosts> ::= <standby_broker1_host>:<port> [,<standby_broker2_host>:<port>]
<host> := HOSTNAME | IP_ADDR
<time> := SECOND
<milli_sec> := MILLI SECOND
注意:
?
和:
在 PHP 连接 URL 中用作标识符,不能包含在密码中。以下是一个包含 "?:
",因此不能用作连接 URL 的密码示例。$url = "CUBRID:localhost:33000:tdb:dba:12?:?login_timeout=100";
包含
?
或:
的密码可以作为单独的参数传递。$url = "CUBRID:localhost:33000:tbd:::?login_timeout=100";
$conn = cubrid_pconnect_with_url ($url, "dba", "12?");
如果用户或密码为空,则不能删除 "
:
",以下是一个示例。$url = "CUBRID:localhost:33000:demodb:::";
conn_url
包含服务器连接信息的字符字符串。
userid
数据库的用户名。
passwd
用户密码。
连接标识符,当进程成功时,或者在失败时为 false
。
示例 #1 cubrid_pconnect_with_url() 不带属性的 url 示例
<?php
$conn_url = "CUBRID:127.0.0.1:33000:demodb:dba::";
$con = cubrid_pconnect_with_url ($conn_url);
if ($con) {
echo "connected successfully";
cubrid_execute($con, "create table person(id int,name char(16))");
$req =cubrid_execute($con, "insert into person values(1,'James')");
if ($req) {
cubrid_close_request ($req);
cubrid_commit ($con);
} else {
cubrid_rollback ($con);
}
cubrid_disconnect ($con);
}
?>
示例 #2 cubrid_pconnect_with_url() 带有属性的 url 示例
<?php
$conn_url = "CUBRID:127.0.0.1:33000:demodb:dba::?althost=10.34.63.132:33088&rctime=100";
$con = cubrid_pconnect_with_url ($conn_url);
if ($con) {
echo "connected successfully";
$req =cubrid_execute($con, "insert into person values(1,'James')");
if ($req) {
cubrid_close_request ($req);
cubrid_commit ($con);
} else {
cubrid_rollback ($con);
}
cubrid_disconnect ($con);
}
?>